【问题标题】:Mfc Dialog change color buttonMfc 对话框更改颜色按钮
【发布时间】:2018-01-08 23:45:30
【问题描述】:

感谢您帮助解决我的问题 我尝试使用visual studio 2010添加一个可以将对话框背景更改为不同颜色的按钮,但我认为这样做可能是错误的方法

    void PainterDlg::OnBnClickedButton7()
    {
    CBrush m_brush; 
    m_brush.CreateSolidBrush(RGB(255, 255, 255));
    return m_brush;
    }

或者应该是这个样子

    void PainterDlg::OnBnClickedButton7()
    {
    CBrush m_brush; 
    m_brush.CreateSolidBrush(RGB(255, 255, 255));
    return m_brush;
    }

这两种方法都不适合我 提前感谢

【问题讨论】:

  • 系统无法猜测,您正在尝试完成什么。 WM_COMMAND-handlers 没有返回值。随机返回对象不会做任何有意义的事情。您为什么不首先将您的问题分解为其组成部分:1 响应用户输入。 2 更改视觉表示。

标签: button colors mfc dialog


【解决方案1】:

使用 CButton 可不是那么容易。 (在OnDrawItem,OnCtlColor中你必须自己绘制)

更简单的方法是使用 CMFCButton。 为您的 Button 添加一个成员变量(使用 MFC-ClassWizzard)并将其更改为 CMFCButton。 这是一个将颜色按钮更改为绿色的示例。

void CColorButtonSimpleDlg::OnBnClickedMyColorbtn()
{
  // add a Member Variable for your Button
  // Change it to CMFC Button

  // CMFCButton m_myBtn;     declared in Header-File  *.h 
  m_myBtn.EnableWindowsTheming(FALSE);      // (important!)
  m_myBtn.SetFaceColor(RGB(0, 255, 0));     // Change to your desired Background Color
  m_myBtn.SetTextColor(RGB(255, 255, 255)); // Change it to your desired Foreground Color

}

【讨论】:

  • SetFaceColor 有效,但 SetTextColor 无效,总体看起来很糟糕。
  • 保持简单! :) 我不是色彩理论专家。 SetTextColor 有效。也许您必须使示例中的按钮无效并重新绘制。
【解决方案2】:

Nvm 找到了

    int r,b,g; 
    r=rand()%255;
    b=rand()%255;
    g=rand()%255;
    CBrush myb;
    myb.CreateSolidBrush(RGB(r,b,g));
    dc2.FillRect(&rect,&myb);

【讨论】:

    猜你喜欢
    • 2019-11-24
    • 1970-01-01
    • 2013-06-07
    • 1970-01-01
    • 2021-11-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多