实现一个基于Dialog的MFC应用程序,主对话框界面上有一个Picture格式的显示区域,要在该显示区域内实现重绘。 
在OnPaint()中已经添加的显示区域的显示代码,可是仍然出现以下问题: 
1)单击“说明按钮”,弹出说明对话框,拖动说明对话框(遮挡在主对话框显示区域前面),在显示区域出现遮挡阴影; 
2)拖动对话框界面,使得部分绘图区域移出显示桌面,再将对话框界面拖回桌面,出现遮挡阴影; 
3)单击其他文件,将对话框界面完全遮挡,再恢复对话框界面的前端显示,整个绘图区域都变成遮挡阴影。 
 
诚心求教各位大侠,如何实现重绘部分,避免上述问题。 
感激不尽! 

解决方案 »

  1.   

    这个大概是因为在这三种case下,界面并没有发生整体重绘造成的?我猜你重载了界面的OnPaint()函数代码?
    类似的情况可以使用一个自定义消息映射来实现。简单说就是自定义一个WM_MY_RECT消息,在上述三种或更多的情形下,重载对应的消息映射函数,分别获取造成阴影的CRect区域,保存成一个成员变量m_MyRect中,并发送自定义消息WM_MY_RECT,在该消息映射函数中实现m_MyRect的区域刷新或重绘。至于代码嘛,呵呵,都是些耗时间的东西,多花点时间就搞定了。切记界面上的东西能不重绘就尽可能避免重绘,那个是很占开销的
      

  2.   

    检查一下看有没有设置了Transparent属性(描述:指定对话框将具有透明背景)。我刚刚也出现了一样的问题,找了半天才发现是这个属性的问题。
      

  3.   

    是不是OnEraseBkgnd()直接RETURN TRUE了