如何设置Button BackColor?

时间:2011-05-03 12:32:51

标签: windows winapi visual-c++

如何更改使用CreateWindow创建的按钮控件的背景颜色?

2 个答案:

答案 0 :(得分:1)

Windows API不再提供许多选项来自定义标准控件的外观。

  • WM_CTLCOLORBTN可以通过按钮的父窗口来控制按钮外观的某些方面,但是uxtheme按钮仅使用背景画笔来绘制按钮后面的区域。面部的外观由当前主题决定。

  • 通过在按钮上设置BS_OWNERDRAW样式,父窗口也可以处理
  • WM_DRAWITEM。这允许父窗口完全替换绘制逻辑的普通按钮。

答案 1 :(得分:0)

要管理对话框中控件的颜色,请在对话框类中为WM_CTLCOLOR消息添加处理程序。
然后你必须添加几行代码:

HBRUSH CYourDialogClass::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
    HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);

    if (pWnd->GetDlgCtrlID() == IDC_OF_YOUR_BUTTON)
    {
        pDC->SetBkColor (RGB(0, 0, 255)); // BLUE color for background
        pDC->SetTextColor (RGB(255, 0, 0)); // RED color for text
    }

    return hbr;
}