【问题标题】:C++ Button with transparent background具有透明背景的 C++ 按钮
【发布时间】:2014-12-19 13:00:35
【问题描述】:

我正在用 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);

问题是按钮周围有一个白色边框,如下所示: Link

我尝试使用此代码使其透明,但不起作用。

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

我该怎么做?

谢谢

【问题讨论】:

    标签: c++ winapi button


    【解决方案1】:

    SetBkMode()影响文本渲染是否透明,这不是这里的问题。

    您将不得不WM_PRINTCLIENT 直到父控件进入按钮的 DC,as I demonstrate here。 (请注意,对于复选框、组框、标签等中的透明文本,我的代码仍然调用 SetBkMode();对于按钮,是否使用视觉样式无关紧要)。

    【讨论】:

    • 谢谢! WM_PRINTCLIENT 完成了这项工作。
    猜你喜欢
    • 2020-04-08
    • 2016-08-02
    • 1970-01-01
    • 1970-01-01
    • 2014-01-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多