今天在Windows编程中又遇到了之前曾经遇到过的问题。当点叉关闭一个程序时,虽然它在桌面上消失了但仍在进程中。就像这样:
最后,我发现问题出在WinMain()函数中的窗口消息处理过程上面。PeekMessage()函数在调用时参数出现了错误,第二个参数本应是0,但我写成了hwnd。当把hwnd改成0后程序就一切正常了。
错误调用:
if( PeekMessage( &msg, hwnd, 0, 0, PM_REMOVE ) )
{
TranslateMessage( &msg );
DispatchMessage( &msg );
}
正确调用:
if( PeekMessage( &msg, 0, 0, 0, PM_REMOVE ) )
{
TranslateMessage( &msg );
DispatchMessage( &msg );
}