我想在静态控件上填充颜色和控制字体颜色,以下的m_Text是我定义的静态控件的对象
CDC *pDC=m_Text.GetDC(); CRect rc;
m_Text.GetClientRect(&rc);
//AfxMessageBox("哈哈"); //问题在这里,我不加这个语句,程序执行后不显示我想要的效果,就是说控件区域和字体颜色都没有改变,但是我加了这条语句后,在这个弹出框上点击确定后就显示了控件区域和字体颜色的改变!
CBrush br;
br.CreateSolidBrush(RGB(155,155,155));
pDC->FillRect(&rc,&br); pDC->SetBkColor(RGB(155,155,155));
pDC->SetTextColor(RGB(255,0,0));
pDC->DrawText("大家好!",&rc,NULL);
m_Text.ReleaseDC(pDC);为什么呢?望高手帮忙解答!
CDC *pDC=m_Text.GetDC(); CRect rc;
m_Text.GetClientRect(&rc);
//AfxMessageBox("哈哈"); //问题在这里,我不加这个语句,程序执行后不显示我想要的效果,就是说控件区域和字体颜色都没有改变,但是我加了这条语句后,在这个弹出框上点击确定后就显示了控件区域和字体颜色的改变!
CBrush br;
br.CreateSolidBrush(RGB(155,155,155));
pDC->FillRect(&rc,&br); pDC->SetBkColor(RGB(155,155,155));
pDC->SetTextColor(RGB(255,0,0));
pDC->DrawText("大家好!",&rc,NULL);
m_Text.ReleaseDC(pDC);为什么呢?望高手帮忙解答!
或者
派生cstatic类中处理
直接用它提供的CPaintDC dc(this);来画好了
另外,想在静态控件上填充颜色和控制字体颜色 也可通过响应WM_CTLCOLOR消息来处理
一般设置控件的颜色可以使用WM_CTLCOLOR来实现。
例如:
HBRUSH CMyDialog::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
if (nCtlColor == CTLCOLOR_EDIT) {
pDC->SetBkColor(RGB(255, 255, 0)); // yellow
return m_hYellowBrush;
}
if (nCtlColor == CTLCOLOR_DLG) {
pDC->SetBkColor(RGB(255, 0, 0)); // red
return m_hRedBrush;
}
return CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
}
这个是对对话框里面的控件进行背景颜色的设置。