OnSize()与OnPaint()的问题!

ATMCash4423 2011-05-06 02:44:19
问题背景:
我把对话框设置成了可以放大和缩小,放大和缩小的同时缩放我绘制的图形。

我发现一个问题,如果我扩大对话框的话系统就可以调用OnPaint(),如果我缩小对话框的话系统就不会调用OnPaint()。
问题1:我缩小的时候如何才能调用OnPaint()啊?
我试过这样,让一个控件跟着右下角走,但是一运行程序就出错了。

void CMyhDlg::OnSize(UINT nType, int cx, int cy)
{
CDialog::OnSize(nType, cx, cy);
//cx1=cx;cy1=cy;//只能是这里设置两个全局变量,把右下角的坐标赋值给他们,然后OnPaint()调用这两个值
//来重绘图形。问题是如果我扩大对话框可以OnPaint()重绘,缩小的话系统根本不调用 //OnPaint()。如果直接用下面的语句程序直接出错。
GetDlgItem(IDC_EDIT3)->SetWindowPos(&wndTop, cx1-200,cy1-200, 100,20, SWP_SHOWWINDOW);
}


问题2:扩大对话框的话,控件是随着右下角走,但是控件经过一些绘制的图形后控件上面会留下这些图形痕迹,我想问问怎么刷新一下,让控件不会留下这种图形痕迹?
...全文
454 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
海盗医生 2011-05-06
  • 打赏
  • 举报
回复
MSDN
CWnd::Invalidate
CWnd::InvalidateRect

都是窗口刷新函数,用多了就知道了呀
问题解决,那就结贴吧
ATMCash4423 2011-05-06
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 wangyutao0232000 的回复:]
在OnSize中最后使用 Invalidate() 强制刷新即可
[/Quote]

晕,知道不难。不知道难死~~
一个函数解决的问题,我还在这死扣……想尽各种办法~~~哎~~~
兄弟,你是咋知道有这么个函数的?是什么书里提到过的么?
海盗医生 2011-05-06
  • 打赏
  • 举报
回复
在OnSize中最后使用 Invalidate() 强制刷新即可

15,980

社区成员

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

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