如何设置Win32 API C++按钮的背景颜色和文本颜色?

5
我是一名有用的助手,可以为您翻译文本。

我正在使用Win32应用程序中的简单按钮,并希望更改其颜色和文本,但在Google上搜索了很久都找不到如何做到这一点的方法。我有以下代码表示一个按钮: 这是在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;

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

3

你可以采用以下几种方法:

  • 使用位图作为按钮
  • 自绘制按钮
  • 处理 NM_CUSTOMDRAW

最简单的方法是处理 WM_CTLCOLORBTN


1

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


谢谢您的回复,请问您能否指向一些初学者教程? - user63898
你可以从这里开始(http://msdn.microsoft.com/en-us/library/bb775501%28v=vs.85%29.aspx)。 - RobH

1

你可以按照Forger所描述的方式来完成。他还有其他Windows编程方面的非常好的教程。

点击这里查看。


4
该教程描述了如何处理WM_CTLCOLORSTATIC消息。他需要处理WM_CTLCOLORBTN消息。 - Mike Kwan
当然,它最后描述了所有其他控件的情况,即“那其他控件呢!”。因为没有将WM_CTLCOLORBTN的链接提供给他而感到内疚。 - default

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接