Pie*_*aud 5 c++ windows mfc comctl32
我有一个基于MFC的程序,在应用更新3059317之前工作正常:
MS15-060:Microsoft公共控件中的漏洞可能允许远程执行代码:2015年6月9日)
此更新将替换Comctl32.dll为新版本.
应用此更新后,打开对话框只会挂起程序.并非所有对话框都会受到影响,但打印预览始终处于挂起状态,但不会导致程序崩溃.它变得没有反应.
我不知道如何尝试调试此问题以找到解决方法.程序挂起时创建内存转储会产生以下堆栈跟踪:
comctl32.dll!751f8505()
Xxx.exe!CWnd::WindowProc(unsigned int message, unsigned int wParam, long lParam) Line 2095 + 0x13 bytes
Xxx.exe!AfxCallWndProc(CWnd * pWnd, HWND__ * hWnd, unsigned int nMsg, unsigned int wParam, long lParam) Line 285
Xxxx.exe!AfxWndProc(HWND__ * hWnd, unsigned int nMsg, unsigned int wParam, long lParam) Line 434 + 0x10 bytes
user32.dll!76aafd72()
user32.dll!76aa84de()
user32.dll!76aafd72()
user32.dll!76aa9f8d()
ntdll.dll!77dd5a7e()
user32.dll!76aaa2af()
comctl32.dll!75249cfb()
comctl32.dll!751fb559()
user32.dll!76aafd72()
user32.dll!76aafe4a()
user32.dll!76ab09d3()
user32.dll!76abb759()
Xxx.exe!CWnd::DefWindowProcA(unsigned int nMsg, unsigned int wParam, long lParam) Line 1116 + 0x7 bytes
Xxx.exe!CWnd::Default() Line 315 + 0x13 bytes
Xxx.exe!CParsedEdit::OnPaint() Line 1603
Xxx.exe!CBannerEdit::OnPaint() Line 368
Run Code Online (Sandbox Code Playgroud)
所以我们确实陷入了困境Comctl32.dll- 现在是什么?
顺便说一下,在某些情况下,卸载更新可以解决问题.
UPDATE
在所有情况下,关闭Aero始终可以解决问题.并且KB3059317似乎不是2015年6月对Windows Vista的唯一更新,它展示了这种奇怪的行为.
在使用 Areo Vista 时,至少我们应用程序中的一个对话框会失败:该对话框只是未绘制。它存在,但只是不可见。
要解决 Vista Aero 上的问题,请删除SetRedraw()执行时对函数OnInitDialog()和OnSize()方法的任何调用。
SetRedraw(TRUE)至少在这两种情况下,似乎没有(积极)效果。