回 帖 发 新 帖 刷新版面

主题:[讨论]对话框的重绘

我在对话框上用TextOut打印了一句话,但当我改变对话框尺寸时,那句话还在!按理说尺寸改变了,就应该要重绘嘛,怎么那句话还在呢?
还有,我用SetClassLong去设置对话框的背景,怎么没有任何改变哦?
哪位高手知道,指点一下....
谢谢!

回复列表 (共3个回复)

沙发

当你移动对话框,不会进行重绘的,但你改变对话框尺寸,大小时会重绘,如:你最大化对话框,这时上面的文字就不会存在了。

当然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;
}

板凳

我把打印放在了OnPaint()了,还是不行啊!

3 楼

[quote]我把打印放在了OnPaint()了,还是不行啊!
[/quote]
TextOut 放在OnPaint(),那输出文字就不会消失了,因为每次重绘都会响应OnPaint()函数。

我来回复

您尚未登录,请登录后再回复。点此登录或注册