改变对话框的背景色应该怎么办?

shangqiu2006 2011-04-08 06:41:26
void CPowDlg::OnPaint()
{
CPaintDC dc(this); // device context for painting

// TODO: Add your message handler code here
CRect rc;
this->GetWindowRect(rc);

int l,t,b,r;
l=rc.left;
r=rc.right;

t=rc.top;
b=rc.Height()/4+t;
CRect rc1(l,t,r,b);
dc.FillSolidRect(rc1,RGB(255,255,0));

b=rc.Height()/4*3+t;
t=b=rc.Height()/4+t;
CRect rc2(l,t,r,b);
dc.FillSolidRect(rc2,RGB(255,255,0));


// Do not call CDialog::OnPaint() for painting messages
}

以上是我在对话框的OnPaini函数中写的代码,是想改变对话框的上面四分之一跟下面的四分之一的颜色,但是运行之后没有作用,问哈我该怎么写代码才可以???????????
...全文
86 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
ai_at_china 2011-04-11
  • 打赏
  • 举报
回复
怎么不在OnCtrlColor里实现
jason_azhe 2011-04-11
  • 打赏
  • 举报
回复
可以把画背景的实现代码全放在OnEraseBkgnd里面。
MFC可以直接用ON_WM_ERASEBKGND()。
xnayufenglin 2011-04-11
  • 打赏
  • 举报
回复
this->GetWindowRect(rc);

换成

this->GetClientRect(rc);

试试

jason_azhe 2011-04-11
  • 打赏
  • 举报
回复
添加一个消息映射:MESSAGE_HANDLER(WM_ERASEBKGND, OnEraseBkgnd),擦除背景再画。
zjw6861982 2011-04-08
  • 打赏
  • 举报
回复
当Windows或应用程序请求重画应用程序窗口的一部分时,框架调用这个成员函数。WM_PAINT在调用UpdateWindow或RedrawWindow成员函数时发出。当设置了RDW_INTERNALPAINT标志并调用RedrawWindow成员函数时,窗口可能会接收到内部重画消息。在这种情况下,窗口可能没有更新区域。应用程序必须调用GetUpdateRect成员函数以确定窗口是否具有更新区域。如果GetUpdateRect返回0,则应用程序不应调用BeginPaint和EndPaint成员函数。


你需要在你的启动或者按钮动作事件响应消息中调用UpdateWindow RedrawWindow来触发onPaint

3,881

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 其它技术问题
社区管理员
  • 其它技术问题社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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