我想让点击系统菜单上关闭按钮的时候弹出一个提示框,询问是否真的关闭程序。case SC_CLOSE:
if(IDYES==MessageBox(hwnd,TEXT("是否真的退出?"),szAppName,MB_YESNO))
{
DestroyWindow(hwnd);
}
else
return 0 ;
这是窗口处理函数的一个片段,
问题如下:
我想知道这里为什么 return 0就能让程序不退出?
直接返回?这是个窗口过程函数返回给了OS吧,那为什么点击了否,这个提示框也不见了呢?程序没退出,麻烦大家给解释一下,一直想不明白return 的用法,尤其在这里。3Q!

解决方案 »

  1.   

    return就是退出窗口过程函数啊,感觉没有什么好讲的!
      

  2.   

    return (LRESULT)0;表示做完了。其实是没关闭,注意‘提示框’早就关闭了
      

  3.   

    Window依靠消息机制来驱动,在程序的主线程中有一个消息处理循环,在调用DestroyWindow后会产生一个消息,使消息处理循环结束,程序才真正的退出。
    而当你弹出的提示框选了NO的话,仅仅是把当前的这个消息响应完成了,主线程会继续去处理下一个消息。
      

  4.   

    如果不退出这个函数就会继续执行关闭窗口的过程,而return会中断这个过程,所以就不会关闭窗口
      

  5.   

    return返回了,就不让往下执行了