今天抛弃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()的消息了!

, ,
Trackback

本文到目前为止还暂无回复

添加回复