程序段1:case WM_CLOSE:
iResult = MessageBox(hwnd,TEXT("确定关闭窗口!"),TEXT("提示!"),MB_YESNO|MB_ICONWARNING);
if(iResult == IDYES)
DestroyWindow(hwnd);
else
return 0;
case WM_DESTROY:
PostQuitMessage(0);
return 0;
程序段2:case WM_CLOSE:
iResult = MessageBox(hwnd,TEXT("关闭窗口!"),TEXT("提示!"),MB_YESNO|MB_ICONWARNING);
if(iResult == IDYES)
DestroyWindow(hwnd);
return 0;
case WM_DESTROY:
PostQuitMessage(0);
return 0;
跟踪调试程序段2可以看出程序进入DestroyWindow(hwnd)后会继续执行WM_DESTROY,然后才退出DestroyWindow(hwnd),return 0。两段程序虽然运行结果相同,但是前者退出DestroyWindow(hwnd)后还会再次进入WM_DESTROY:中,先后进了2次,而第二次进入时其实窗口已经销毁了。请问程序段1的这种方式存在风险吗? |