【问题标题】:how to set win32 api c++ button background color and text color?如何设置win32 api c++按钮背景颜色和文本颜色?
【发布时间】: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;

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

【问题讨论】:

    标签: c++ winapi button background-color


    【解决方案1】:

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

    【讨论】:

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

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

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

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

    【讨论】:

      【解决方案3】:

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

      看看here

      【讨论】:

      • 该教程描述了处理 WM_CTLCOLORSTATIC。他需要处理 WM_CTLCOLORBTN。
      • 确实如此,最后描述了所有其他控件的情况!描述了所有其他控件的情况。因未向他提供 WM_CTLCOLORBTN 的链接而被指控有罪。
      猜你喜欢
      • 1970-01-01
      • 2020-11-07
      • 1970-01-01
      • 1970-01-01
      • 2011-03-19
      • 2017-08-31
      • 2020-08-19
      • 2013-07-29
      • 2019-06-07
      相关资源
      最近更新 更多