+ -
当前位置:首页 → 问答吧 → CWnd的派生类OnPait响应方法问题

CWnd的派生类OnPait响应方法问题

时间:2011-11-28

来源:互联网

如图:我从CWnd派生了一个类作为一个对话框的子窗口使用(子窗口在对话框初始化时创建),在OnPaint函数里,调用了dc.SetBkColor,但是背景没有改变,子窗口也根本显示不出来;如果在调用dc.SetBkColor后再调用dc.TextOutW,则背景颜色和文字都能正常显示
请问是什么原因哈,具体原理是啥子

作者: gadx86   发布时间: 2011-11-28

同求原理啊

作者: cldonkey   发布时间: 2011-11-28


没看懂,不过
OnPaint函数会发送一个WM_CTLCOLOR消息调用CWND的 ::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)函数,该函数返回 HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);系统默认的背景刷子来改变窗体背景色,所以你的操作无效,改变背景应该在这个函数里,

作者: xiaoxiaoyu85   发布时间: 2011-11-28