2013-11-22 125 views
1

我的问题是相似的: win32 : display editbox with black color in text area on windows mobile 5MFC:如何更改整个编辑框的背景颜色?

但是我使用不具有可作为一个在上面的链接相同的解决方案MFC。

如何更改整个背景的背景颜色,而不仅仅是编辑框文本背后的背景颜色?

下面是我的代码,它只改变文本背后的背景,而不是编辑框的整个背景。

HBRUSH CGadgetStandardDialog::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) 
{ 
    HBRUSH hbr = CStandardDialog::OnCtlColor(pDC, pWnd, nCtlColor); 
    pDC->SetBkColor(RGB(255,255,255)); 

    return hbr; 
} 
+0

也许重写'OnEraseBkgnd'会有所帮助。 –

+0

我觉得这是一个很好的方向,但我不知道如何进行.. – CodeDoctorJL

回答

6

除了调用SetBkColor之外,还需要返回所需背景色的HBRUSH。因此,创建较早刷(比如说,在对话框的构造函数):

m_brBack.CreateSolidBrush(RGB(0, 255, 0)); 

然后返回一个叫做感兴趣的控制时的刷:

HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor); 
if (pWnd->GetDlgCtrlID() == IDC_EDIT2) 
{ 
    pDC->SetBkColor(RGB(0,255,0)); 
    hbr = m_brBack; 
} 
0

重命名您的按钮资源像下面。

CButton m_StopButtonto; 

CMFCButton m_StopButton; 

改变一些明显的特点

// Set the background color for the button text. 
    m_StopButton.SetFaceColor(RGB(255,0,0),true); 
    m_StopButton.SetTextColor(RGB(0,0,255)); 
    // Set the tooltip of the button. 
    m_StopButton.SetTooltip(_T("This is my Stop Button!")); 

我尝试这个解决方案按钮,它为我工作。我想它会适用于其他组件。