主题:[讨论]对话框的重绘
奇人天狼
[专家分:0] 发布于 2008-02-17 13:01:00
我在对话框上用TextOut打印了一句话,但当我改变对话框尺寸时,那句话还在!按理说尺寸改变了,就应该要重绘嘛,怎么那句话还在呢?
还有,我用SetClassLong去设置对话框的背景,怎么没有任何改变哦?
哪位高手知道,指点一下....
谢谢!
回复列表 (共3个回复)
沙发
shuukaki [专家分:850] 发布于 2008-02-17 13:49:00
当你移动对话框,不会进行重绘的,但你改变对话框尺寸,大小时会重绘,如:你最大化对话框,这时上面的文字就不会存在了。
当然TextOut你不能放在OnPaint函数下实现,否则就不会消失了。
改变对话框背景颜色可以添加WM_CTLCOLOR消息响应实现。
例如:红色背景
HBRUSH CTextoutDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
if (CTLCOLOR_DLG == nCtlColor)
{
return CreateSolidBrush(RGB(255, 0, 0));
}
return hbr;
}
板凳
奇人天狼 [专家分:0] 发布于 2008-02-17 14:48:00
我把打印放在了OnPaint()了,还是不行啊!
3 楼
shuukaki [专家分:850] 发布于 2008-02-18 08:51:00
[quote]我把打印放在了OnPaint()了,还是不行啊!
[/quote]
TextOut 放在OnPaint(),那输出文字就不会消失了,因为每次重绘都会响应OnPaint()函数。
我来回复