Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ MFC应用程序表面的瑕疵_C++_User Interface_Mfc_Artifacts - Fatal编程技术网

C++ MFC应用程序表面的瑕疵

C++ MFC应用程序表面的瑕疵,c++,user-interface,mfc,artifacts,C++,User Interface,Mfc,Artifacts,我必须在视觉上改进一个旧的MFC应用程序,它在旧的布局中运行良好。 现在,如果在该应用程序的前景中移动另一个窗口,则会出现下图中突出显示的新布局工件。 即使我的应用程序恢复了焦点,它也不会正确地重新绘制 主窗口是一个样式为WS_OVERLAPPEDWINDOW的CFramewn,包含其他元素,如CWnd和CDialogBar。我必须在某个点上覆盖默认行为OnNcPaint、OnActivate和OnPaint以达到规范 如果我切换回丑陋的旧布局,这幅画是完美的。但是有太多的部分被改变了,以至于我

我必须在视觉上改进一个旧的MFC应用程序,它在旧的布局中运行良好。 现在,如果在该应用程序的前景中移动另一个窗口,则会出现下图中突出显示的新布局工件。 即使我的应用程序恢复了焦点,它也不会正确地重新绘制

主窗口是一个样式为WS_OVERLAPPEDWINDOW的CFramewn,包含其他元素,如CWnd和CDialogBar。我必须在某个点上覆盖默认行为OnNcPaint、OnActivate和OnPaint以达到规范

如果我切换回丑陋的旧布局,这幅画是完美的。但是有太多的部分被改变了,以至于我找不到导致这个问题的唯一区别。希望你能说出一个可能的原因

如果需要,我很乐意为您提供更具体的信息


您最近是否从此应用程序中删除了XP支持?XP和Windows 7上的行为相同。该软件还应该是使用XP旧设备的客户的更新,因此它仍然是一项要求。我之所以这么问,是因为如果应用程序未标记为XP,则对GetSystemMetrics的响应会发生变化。我最近遇到了它,因为我自己的OnNcPaint没有正确绘制。这是因为背景没有被正确地重新绘制,可能是因为优化了WM_ERASEBKGND以减少闪烁。我建议禁用任何此类优化,直到重新正确绘制为止,然后逐个重新实现,直到找到具体问题。我发现,在Windows 7上,只有在service Desktop Window Manager会话管理器停止时,才会出现工件。