【问题标题】:how to set Button BackColor?如何设置按钮背景色?
【发布时间】:2011-05-04 15:55:51
【问题描述】:

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

【问题讨论】:

    标签: windows winapi visual-c++


    【解决方案1】:

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

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

    • WM_DRAWITEM 也可以由父窗口处理,方法是在按钮上设置BS_OWNERDRAW 样式。这使得父窗口可以完全替代普通的按钮绘制逻辑。

    【讨论】:

      【解决方案2】:

      要管理对话框上控件的颜色,请将处理程序添加到对话框类中的 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;
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2019-06-07
        • 1970-01-01
        • 1970-01-01
        • 2010-09-27
        • 2019-03-17
        • 2021-10-29
        相关资源
        最近更新 更多