DrawText的问题

小宇去读书 2011-04-21 02:40:34
我在一个继承自CDialog的对话框窗体中,重写了OnPaint函数,想在窗体大小变化时在正中间输出一段文字,现在是一开始是可以输出,但是窗体大小变化时这段文字位置完全没有变化,在GetUpdataRect中也看出此时明明整个窗口都重绘了,请大家帮忙看下。

void CAmmterListWnd::OnPaint()
{
CRect rc;
GetUpdateRect(&rc, TRUE);

CString csTmp = "";
csTmp.Format("Trace updateRect left = %d, right = %d, top = %d, bottom = %d", rc.left, rc.right, rc.top, rc.bottom);
OutputDebugString(csTmp);
CPaintDC dc(this);



CRect rect;
GetClientRect(&rect);

dc.DrawText("Test", &rect, DT_CENTER);

}
...全文
110 11 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
小宇去读书 2011-04-21
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 chrc1122 的回复:]
我是新手 感觉这倒是一个有趣的问题 窗口大小改变后应该会引发WM_PAINT消息 为什么一定要先把窗口无效化 才能输出呢?呵呵 还有发现LZ一个不好的习惯 你的DC没有释放呢
[/Quote]
谢谢关注,CPaintDC是局部变量,会自动析构的
小宇去读书 2011-04-21
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 mfcing 的回复:]
引用 5 楼 llluiop 的回复:
引用 2 楼 tandyt 的回复:
引用 1 楼 visualeleven 的回复:
WM_SIZE中InvalidateRect();


up!

谢谢,问题解决了,但是有个问题不明白,就是GetUpdateRect(&rc, TRUE)里,要更新的区域大小明明是整个窗体的大小,难道即使大小时这样,更新的区域还是有差别的……
[/Quote]
就是说我在GetUpdateRect(&rc, TRUE)里看了下要更新的大小,,是整个窗口的大小,这时接下来不是Onpaint更新整个窗口吗? 为什么要还要在OnSize显式的调用InvlidateRect
chrc1122 2011-04-21
  • 打赏
  • 举报
回复
是不是SDK的DC最后处理和MFC的不一样 呵呵
chrc1122 2011-04-21
  • 打赏
  • 举报
回复
我是新手 感觉这倒是一个有趣的问题 窗口大小改变后应该会引发WM_PAINT消息 为什么一定要先把窗口无效化 才能输出呢?呵呵 还有发现LZ一个不好的习惯 你的DC没有释放呢
疯狂-的-蜗牛 2011-04-21
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 llluiop 的回复:]
引用 2 楼 tandyt 的回复:
引用 1 楼 visualeleven 的回复:
WM_SIZE中InvalidateRect();


up!

谢谢,问题解决了,但是有个问题不明白,就是GetUpdateRect(&rc, TRUE)里,要更新的区域大小明明是整个窗体的大小,难道即使大小时这样,更新的区域还是有差别的吗?
[/Quote]
这句话有语病,不理解
小宇去读书 2011-04-21
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 tandyt 的回复:]
引用 1 楼 visualeleven 的回复:
WM_SIZE中InvalidateRect();


up!
[/Quote]
谢谢,问题解决了,但是有个问题不明白,就是GetUpdateRect(&rc, TRUE)里,要更新的区域大小明明是整个窗体的大小,难道即使大小时这样,更新的区域还是有差别的吗?
疯狂-的-蜗牛 2011-04-21
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 visualeleven 的回复:]
WM_SIZE中InvalidateRect();
[/Quote]
一楼都说了
w_xbei 2011-04-21
  • 打赏
  • 举报
回复
OnPaint()
只绘需要绘制的地方,就是有改变的地方
TandyT 2011-04-21
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 visualeleven 的回复:]
WM_SIZE中InvalidateRect();
[/Quote]

up!
Eleven 2011-04-21
  • 打赏
  • 举报
回复
WM_SIZE中InvalidateRect();

15,980

社区成员

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

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