更改使用Createwindow命令创建的按钮的背景颜色

时间:2013-11-27 11:32:26

标签: winapi visual-c++

您好我想更改按钮的背景颜色。这是我的按钮代码

 hwndTemp = CreateWindow(TEXT("BUTTON"), Str("Settings"),
    WS_CHILDWINDOW|WS_VISIBLE|WS_TABSTOP|BS_TEXT|BS_PUSHBUTTON|WS_CLIPSIBLINGS,
    0, 0, 0, 0, hwndMain, (HMENU)ID_SETTINGS, 0, 0);
SendMessage(hwndTemp, WM_SETFONT, (WPARAM)GetStockObject(DEFAULT_GUI_FONT), TRUE);

还有3或4个按钮,我想将更改应用到每个按钮。所有这些都有不同的(HMENU)名称。

1 个答案:

答案 0 :(得分:4)

Windows原生的按钮控件没有可以更改的背景颜色属性。并且WM_CTLCOLORBTN不起作用(并且从未起作用)。您可以使用BS_OWNERDRAW样式或较新的NM_CUSTOMDRAW消息自定义按钮的外观。它不像设置背景颜色那么简单:您必须绘制整个按钮。

在codeproject上有很多这些技术的例子:

http://www.codeproject.com/Articles/3269/Native-Win32-Theme-aware-Owner-draw-Controls-witho

http://www.codeproject.com/Articles/12340/CImageButtonWithStyle-Buttons-using-Images-with-XP