初学控件,碰到个奇怪的问题,想不明白,望help!

拿节 2006-04-28 09:51:48
我想在静态控件上填充颜色和控制字体颜色,以下的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);

为什么呢?望高手帮忙解答!
...全文
170 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
snowbirdfly 2006-05-01
  • 打赏
  • 举报
回复
恩~
一般设置控件的颜色可以使用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);
}
这个是对对话框里面的控件进行背景颜色的设置。

lyl_rabbit 2006-05-01
  • 打赏
  • 举报
回复
同意在WM_CTLCOLOR 实现。
ks_gq 2006-04-28
  • 打赏
  • 举报
回复
强烈建议在 WM_CTLCOLOR 实现。
laogong165 2006-04-28
  • 打赏
  • 举报
回复
onpaint的话 就不要在定义CDC *pDC了
直接用它提供的CPaintDC dc(this);来画好了
另外,想在静态控件上填充颜色和控制字体颜色 也可通过响应WM_CTLCOLOR消息来处理
lixiaosan 2006-04-28
  • 打赏
  • 举报
回复
代码写在onpaint中
或者
派生cstatic类中处理
拿节 2006-04-28
  • 打赏
  • 举报
回复
不是,我在onpaint()这个函数里写的以上语句!
kugou123 2006-04-28
  • 打赏
  • 举报
回复
m_Text.Invalidate();

try...
gufengduyu 2006-04-28
  • 打赏
  • 举报
回复
没有刷新重新刷新,加个m_Text.Invalidate()试试
fisker0303 2006-04-28
  • 打赏
  • 举报
回复
完全同意楼上.

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧