总而言之,我有一个关于WinMain的问题。在VS2010中,_tWinMain的返回值为“(int)msg.wParam”。我不明白为什么它会返回wParam。wParam是什么?我可以将其更改为“return0”吗? 最佳答案 当WM_QUIT被GetMessage处理时,它会终止消息循环。WM_QUIT的文档是这样说的:wParamTheexitcodegiveninthePostQuitMessagefunction.这是您从WinMain返回的值。因此,该值只是作为退出代码传递给PostQuitMessage的值。您可
我想知道这两个片段之间是否存在差异:一个:voidmain(){//...while(GetMessage(&msg,NULL,0,0)){TranslateMessage(&msg);DispatchMessage(&msg);}ExitProcess(0);}//...voidquit(){PostQuitMessage(0);}两个:boolquit=false;voidmain(){//...while(GetMessage(&msg,NULL,0,0)){TranslateMessage(&msg);DispatchMessage(&msg);if(quit){while(P
在我的演示应用中caseWM_CLOSE:DestroyWindow(hndl);return0;和caseWM_CLOSE:PostQuitMessage(0);return0;做同样的事情。每次打电话时,窗帘后面有什么不同?DestroyWindow是否更直接,因为PostQuitMessage必须通过返回false的getmessage循环? 最佳答案 DestroyWindow销毁窗口(惊喜)并将WM_DESTROY(您还将获得WM_NCDESTROY)发送到消息队列。这是WM_CLOSE的默认行为。然而,仅仅因为一个窗口被
在我的演示应用中caseWM_CLOSE:DestroyWindow(hndl);return0;和caseWM_CLOSE:PostQuitMessage(0);return0;做同样的事情。每次打电话时,窗帘后面有什么不同?DestroyWindow是否更直接,因为PostQuitMessage必须通过返回false的getmessage循环? 最佳答案 DestroyWindow销毁窗口(惊喜)并将WM_DESTROY(您还将获得WM_NCDESTROY)发送到消息队列。这是WM_CLOSE的默认行为。然而,仅仅因为一个窗口被
有什么区别caseWM_DESTROY:PostQuitMessage(WM_QUIT);break;和caseWM_DESTROY:PostQuitMessage(0);break;? 最佳答案 当您调用PostQuitMessage时,您传递的是退出代码,而不是消息ID。PostQuitMessage将依次为您生成(并发布)WM_QUIT消息。从技术上讲,不同之处在于使用PostQuitMessage(WM_QUIT),退出代码将为0x0012(或十进制的18)。而PostQuitMessage(0)将提供0的退出代码。当Get
我正在尝试使用Win32API创建一个非常基本的窗口,我已经很久没有这样做了。我认为我的消息循环没问题,但是当我关闭打开的窗口时,应用程序仍在运行。看起来消息循环永远不会收到WM_QUIT消息。但是,我正在调用PostQuitMessage并且消息框确认我调用了它。这个极简代码有什么问题?#includeLRESULTCALLBACKwindow_proc(HWNDhwnd,UINTmsg,WPARAMw_param,LPARAMl_param){switch(msg){caseWM_DESTROY:MessageBox(NULL,L"destroy",L"info",MB_OK);P