|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 proof 于 2022-3-11 10:33 编辑
// 窗口过程 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号退出,到底是做什么的?
本帖最后由 hrpzcf 于 2022-3-11 11:52 编辑
我的理解:
2:窗口过程检测到WM_KEYDOWN消息后,判断按键是否VK_ESCAPE ,是的话就执行DestroyWindow 销毁窗口并发出一个WM_DESTROY 消息
3:窗口过程检测到WM_DESTROY 消息后,执行PostQuitMessage(0)发出WM_QUIT 消息表示请求退出程序
1:主消息循环检测到WM_QUIT 消息,执行break结束循环,程序跳出循环执行到return ( msg.wParam ) ,也就结束了
|
|