问题背景:
我把对话框设置成了可以放大和缩小,放大和缩小的同时缩放我绘制的图形。 我发现一个问题,如果我扩大对话框的话系统就可以调用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:扩大对话框的话,控件是随着右下角走,但是控件经过一些绘制的图形后控件上面会留下这些图形痕迹,我想问问怎么刷新一下,让控件不会留下这种图形痕迹?
我把对话框设置成了可以放大和缩小,放大和缩小的同时缩放我绘制的图形。 我发现一个问题,如果我扩大对话框的话系统就可以调用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:扩大对话框的话,控件是随着右下角走,但是控件经过一些绘制的图形后控件上面会留下这些图形痕迹,我想问问怎么刷新一下,让控件不会留下这种图形痕迹?
解决方案 »
- 动态更新下拉列表框中的数据,我该怎么做?
- 请问怎么在对话框(CDialog)上画一个实心的红圆,最好给出一段示范代码,谢谢!
- 关于VC6使用boost::thread多线程的问题,其实是boost::thread的一个问题!
- VS2005里 Event Handler 处理函数删除的问题
- 求几张16位555和565的BMP图片
- 求助:我编的一个应用程序一执行就会导致我的Win2000系统重启,可能是什么问题?
- 如何改变嵌在edit和list box中的滚动条外观??如何改变滚动条控件的外观?
- 一个关于皮肤的问题
- 怎么画不出来图像?各位大哥帮帮忙啊!
- 能否将windows媒体播放器的画面无限放大或缩小?
- 在OpenGL地形三维处理上纹理的问题
- MFC对话框下响应键盘按键问题
CWnd::Invalidate
CWnd::InvalidateRect都是窗口刷新函数,用多了就知道了呀
问题解决,那就结贴吧