上次小弟提出一个问题:希望在关闭程序时,先弹出MessageBox询问是否确定要退出,确认后再退出程序。此功能在“菜单”的“退出”中实现了,可是不知怎样对窗口右上角的“关闭”按钮进行编程?高手告知:关闭按钮发出WM_SYSCOMMAND消息,wParam参数是SC_CLOSE,响应这个消息就行。如果响应WM_CLOSE消息更好,不论“退出”菜单还是关闭按钮,都先发出WM_CLOSE,如果WM_CLOSE不掉DestroyWindow或者 DefWindowProc,窗口就不会关闭。
  那我的新问题是:怎样才能让WM_CLOSE不调用DestroyWindow或者DefWindowProc,使窗口在MessageBox前不会关闭?虽然上面高手的指点让小弟受益匪浅,可是问题还是没有解决!

解决方案 »

  1.   

    按下面方法作即可
    LRESULT CMainFrame::WindowProc(UINT message, WPARAM wParam, LPARAM lParam) 
    {
    if(message == WM_SYSCOMMAND)
    {
    if((wParam == *****))//*****为WM_DESTORY的值,自己查是多少吧
    return 0;
    }

    return CFrameWnd::WindowProc(message, wParam, lParam);
    }
      

  2.   

    另:wParam == 0xf032 是处理关闭小叉子的消息值
      

  3.   

    谢谢renjing的帮助,使我终于搞好了这个问题。最终实现如下:
    LRESULT CMainFrame::WindowProc(UINT message, WPARAM wParam, LPARAM lParam) 
    {
    if(message == WM_SYSCOMMAND)
    {
      if((wParam==SC_CLOSE))
      MessageBox("真要退出吗?");
     
    } return CFrameWnd::WindowProc(message, wParam, lParam);
    }再次感谢CSDN和renjing的帮助!