2014-10-23 5 views
0

Я создаю базовое приложение на C++ (Win32 API). Я пытался сделать кнопку с функцией CreateWindow(), как показано ниже:Кнопка C++ с прозрачным фоном

button1 = CreateWindow("button", TEXT("Click Me!"), WS_TABSTOP | WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON, 100, 200, 70, 25, hwnd, (HMENU)NULL, NULL, NULL); 

Проблема заключается в том, что есть белая граница вокруг кнопки, как вы можете увидеть здесь: Link

Я попытался сделать его прозрачным с помощью этого кода, но он не работает.

case WM_CTLCOLORBTN:{ 
    HBRUSH hBrushbtn; 
    hBrushbtn = (HBRUSH)GetStockObject(NULL_BRUSH); 
    SetBkMode((HDC) wParam, TRANSPARENT); 
    return ((LRESULT)hBrushbtn); 
    break; 
} 

Как это сделать?

Благодаря

ответ

1

SetBkMode() влияет ли не является прозрачным или не рендеринг текста, который не является проблемой здесь.

У вас должно быть WM_PRINTCLIENT до родительского элемента управления в DC кнопки, as I demonstrate here. (Обратите внимание, что мой код по-прежнему вызывает SetBkMode() для прозрачного текста в флажках, групповых ящиках, ярлыках и т. Д., Для кнопок не имеет значения, используете ли вы визуальные стили).

+0

Спасибо! WM_PRINTCLIENT выполнил эту работу. –

Смежные вопросы