实现一个基于Dialog的MFC应用程序,主对话框界面上有一个Picture格式的显示区域,要在该显示区域内实现重绘。
在OnPaint()中已经添加的显示区域的显示代码,可是仍然出现以下问题:
1)单击“说明按钮”,弹出说明对话框,拖动说明对话框(遮挡在主对话框显示区域前面),在显示区域出现遮挡阴影;
2)拖动对话框界面,使得部分绘图区域移出显示桌面,再将对话框界面拖回桌面,出现遮挡阴影;
3)单击其他文件,将对话框界面完全遮挡,再恢复对话框界面的前端显示,整个绘图区域都变成遮挡阴影。
诚心求教各位大侠,如何实现重绘部分,避免上述问题。
感激不尽!
在OnPaint()中已经添加的显示区域的显示代码,可是仍然出现以下问题:
1)单击“说明按钮”,弹出说明对话框,拖动说明对话框(遮挡在主对话框显示区域前面),在显示区域出现遮挡阴影;
2)拖动对话框界面,使得部分绘图区域移出显示桌面,再将对话框界面拖回桌面,出现遮挡阴影;
3)单击其他文件,将对话框界面完全遮挡,再恢复对话框界面的前端显示,整个绘图区域都变成遮挡阴影。
诚心求教各位大侠,如何实现重绘部分,避免上述问题。
感激不尽!
类似的情况可以使用一个自定义消息映射来实现。简单说就是自定义一个WM_MY_RECT消息,在上述三种或更多的情形下,重载对应的消息映射函数,分别获取造成阴影的CRect区域,保存成一个成员变量m_MyRect中,并发送自定义消息WM_MY_RECT,在该消息映射函数中实现m_MyRect的区域刷新或重绘。至于代码嘛,呵呵,都是些耗时间的东西,多花点时间就搞定了。切记界面上的东西能不重绘就尽可能避免重绘,那个是很占开销的