一
24
今天抛弃MFC写了一个窗口,用while(GetMessage())进入消息循环
在填写GetMessage()的参数的时候,按照VS2008显示的参数进行填写。GetMessage(&msg,hwnd,0,0)
写好回调后编译,运行,结果点退出之后窗体消失,程序并不退出,打开任务管理器发现CPU飙满。
baidu到一篇和我遇到问题一样,没有解决。
OD载入调试,在GetMessage下断,发现返回-1,加了一句GetLastError()返回0×578,窗体指针无效,豁然开朗。
原来是GetMessage()的第二个参数应该添NULL表示接受所有窗口的消息,我添的是hwnd,DestroyWindow后句柄就无效了,因此GetMessage()返回-1并且进入死循环了。改成NULL就可以正常接收到PostQuitMessage()的消息了!