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

Winapi 更改使用Createwindow命令创建的按钮的背景色,winapi,visual-c++,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, (W

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

 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个按钮,我想将更改应用到每个按钮。所有这些按钮都有不同的名称。

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

codeproject中有许多此类技术的示例:


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

codeproject中有许多此类技术的示例:


您是否在使用comctl v6和主题绘画?如果是这样的话,那么您就不再可以控制按钮的颜色。您需要自己绘制按钮。抱歉,我不知道comctl32 v6。我想您需要了解这一点。我已经阅读了WM_CTLCOLORBTN并尝试应用它,但它不起作用。您理解我最初的评论吗?您是否使用comctl v6和主题绘制?如果是这样的话,那么您就不再可以控制按钮的颜色。您需要自己绘制按钮。抱歉,我不知道comctl32 v6。我想您需要了解这一点。我已经阅读了WM_CTLCOLORBTN并尝试应用它,但它不起作用。您理解我最初的评论吗?