透明背景的C++按钮

C++ Button with transparent background

本文关键字:按钮 C++ 背景 透明      更新时间:2023-10-16

我正在C++(Win32 API)中创建一个基本应用程序。我试着用CreateWindow()函数制作一个按钮,如下所示:

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

问题是按钮周围有一个白色边框,如您所见:链接

我试图用这个代码使它透明,但它不起作用。

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

我该怎么做?

感谢

SetBkMode()影响文本呈现是否透明,这不是问题所在。

正如我在这里演示的那样,您将不得不WM_PRINTCLIENT到按钮的DC中的父控件。(请注意,对于复选框、组框、标签等中的透明文本,我的代码仍然调用SetBkMode();对于按钮,如果使用视觉样式,则无关紧要)。