一个windows程序为啥有这多“退出” ?
本帖最后由 proof1 于 2022-3-11 09:57 编辑// 窗口过程window procedure
LRESULT CALLBACK TheWindowProc (........)
{
switch ( uMsg )
{
case WM_KEYDOWN: //a key has been pressed
{
if ( wParam == VK_ESCAPE ) DestroyWindow ( hWnd ) ; 2号退出
return ( 0 ) ;
} break ;
case WM_DESTROY : //window being destroyed
{
PostQuitMessage ( 0 ) ; 3号退出
return ( 0 ) ;
} break ;
}
}
int WINAPI WinMain (.........)
{
// 消息循环
MSG msg ;
for ( ; ; ) {
//check for a message
if ( PeekMessage( &msg , NULL , 0 , 0 , PM_REMOVE ) )
if ( msg.message == WM_QUIT ) break ; 1号退出
TranslateMessage ( &msg ) ;
DispatchMessage ( &msg ) ;
}
return ( msg.wParam ) ;
}
---------------------------------------------------------
一个windows程序为啥有这多“退出” ?
高手给解释一下,1、2、3号退出,到底是做什么的?
不懂就买本书看,大概你连TheWindowProc 是啥都不知道吧 本帖最后由 proof1 于 2022-3-11 10:37 编辑
tsubasa9 发表于 2022-3-11 09:57
不懂就买本书看,大概你连TheWindowProc 是啥都不知道吧
精英213 官方的hello world
只需要一个PostQuitMessage(0);
网上很多代码复制粘贴瞎搞,不如不看
https://github.com/microsoft/Windows-classic-samples/blob/main/Samples/Win7Samples/begin/LearnWin32/HelloWorld/cpp/main.cpp 注释不是写的挺好的,收到不同消息退出,有按键esc有窗口被关,有退出消息
看不懂去了解下win32消息机制
----发送自 samsung SM-N9600,Android 10 chachi 发表于 2022-3-11 11:21
注释不是写的挺好的,收到不同消息退出,有按键esc有窗口被关,有退出消息
看不懂去了解下win32消息机制
代码的原意是:按ESC键 退出整个应用(窗口)程序。
1、2、3号退出,是否有的语句根本不会执行?(代码bug?)
真正执行退出动作的是哪一个?哪些个语句是聋子耳朵? https://stackoverflow.com/questions/3155782/what-is-the-difference-between-wm-quit-wm-close-and-wm-destroy-in-a-windows-pr
我没办法判断代码质量,建议自己查看win32手册
页:
[1]