您好我想更改按钮的背景颜色。这是我的按钮代码
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)名称。
答案 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