如何设置win32 api c++按钮背景颜色和文本颜色?

Posted

技术标签:

【中文标题】如何设置win32 api c++按钮背景颜色和文本颜色?【英文标题】:how to set win32 api c++ button background color and text color? 【发布时间】:2011-09-12 06:29:03 【问题描述】:

我在 win32 应用程序中使用简单的按钮,我喜欢更改它的颜色和文本 但我无法从谷歌的所有搜索中找到如何做到这一点。 我有这个代表按钮的代码: 这是在 rc 文件中:

LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL
IDD_DIALOG1 DIALOG 0, 0, 273, 209
STYLE DS_3DLOOK | DS_CENTER | DS_MODALFRAME | DS_SHELLFONT | WS_CAPTION | WS_VISIBLE | WS_POPUP | WS_SYSMENU
CAPTION "Win32  demo"
FONT 8, "Ms Shell Dlg"

    DEFPUSHBUTTON   "My Button1 ", IDOK, 59, 176, 69, 14
    PUSHBUTTON      "Log Off", IDC_BUTTON1, 155, 175, 54, 14
 

在主 cpp 文件中,我只触发简单的 Massegebox 警报

case WM_COMMAND:
            switch(LOWORD(wParam))
            
                case IDOK:

                    MessageBox(NULL, L"IDOK button pressed!", L"Pinky says...", MB_OK | MB_ICONEXCLAMATION);
                    break;
                case IDC_BUTTON1:
                    MessageBox(NULL, L"IDC_BUTTON1 button pressed!",L"Pinky says...", MB_OK | MB_ICONEXCLAMATION);
                    break;
                break;
            
        break;

我在哪里以及如何更改按钮的背景颜色和文本?

【问题讨论】:

【参考方案1】:

你不能,或者至少你不能简单地这样做。如果您想要一个彩色按钮,那么您需要设置所有者绘制样式并自己绘制它。普通的旧按钮没有可自定义的颜色。

【讨论】:

感谢重播,能否请您给我指点初学者教程之王? 你可以开始here。【参考方案2】:

您可以采取以下几种方法:

使用位图作为您的按钮 Ownerdraw 按钮 处理 NM_CUSTOMDRAW

最简单的方法就是处理WM_CTLCOLORBTN。

【讨论】:

【参考方案3】:

您可以按照 Forger 的说明进行操作。他还为其他一些 Windows 编程提供了非常好的教程。

看看here

【讨论】:

该教程描述了处理 WM_CTLCOLORSTATIC。他需要处理 WM_CTLCOLORBTN。 确实如此,最后描述了所有其他控件的情况!描述了所有其他控件的情况。因未向他提供 WM_CTLCOLORBTN 的链接而被指控有罪。

以上是关于如何设置win32 api c++按钮背景颜色和文本颜色?的主要内容,如果未能解决你的问题,请参考以下文章

更改整个控制台背景颜色 (Win32 C++)

按下回车按钮时如何使用 C++ Win32 API 调用按钮?

WIN32API:所有者绘制的按钮在单击时在文本周围创建白色背景

win10怎样修改窗口背景颜色?

如何从按钮控件中删除边框并设置复选框背景

C++ Win32 API 控制消息