请问:我开发的是SDI程序,当我按x按钮时如何来控制程序的是否退出?也就是说我按下它的时候我能扑获它的消息由我自己来控制是否退出程序!我截获了WM_DESTROY消息但是不好用执不执行它下面的代码都不起作用我在视图的虚函数WindowProc中。

解决方案 »

  1.   

    应该处理WM_SYSCOMMAND消息,窗口控制菜单(左上角的图标菜单,包括有上角的按钮)所有的命令都包含在这个消息中。
      

  2.   

    void CMainFrame::OnSysCommand(UINT nID, LPARAM lParam) 
    {
    // TODO: Add your message handler code here and/or call default
    if((nID &0Xfff0)==SC_CLOSE)
    {
    AfxMessageBox("dddddddddd");

    }
    CFrameWnd::OnSysCommand(nID, lParam);
    }
      

  3.   

    老是来晚;休息一下午;用楼上说的;SC_CLOSE是窗口右上角的X(关闭)
      

  4.   

    或者你用
    if (GetMessage()==WM_CLOSE)
    {
      ...............
    }
      

  5.   

    BOOL bRet;while( (bRet = GetMessage( WM_CLOSE, NULL, 0, 0 )) != 0)

        if (bRet == -1)
        {
            // handle the error and possibly exit
        }
        else
        {
            TranslateMessage(&msg); 
            DispatchMessage(&msg); 
        }
    }
      

  6.   

    刚才试了一下好象在CLASSVIEW里面在CMainFrame上点右键用ADD WINDOWS MESSAGE HANDLER映射一下CMainFrame的WM_CLOSE消息就可以了,在CMainFrame::OnClose()函数里加自己东西OK了
      

  7.   

    刚才试了一下好象在CLASSVIEW里面在CMainFrame上点右键用ADD WINDOWS MESSAGE HANDLER映射一下CMainFrame的WM_CLOSE消息就可以了,在CMainFrame::OnClose()函数里加自己东西OK了
    ok ok ok
      

  8.   

    大家好,我忆申请这个号很长时间了不过不知道怎么发新帖子,请指教。
    我有一问题:
    #include <afxwin.h>
    class My:public CFrameWnd
    {public:
     afx_msg void OnPaint()
     {CPaintDCpaintDC(this);
     paintDC.TextOut(0,0,"这是我的第一个窗口");
     }
     DECLARE_MESSAGE_MAP()
    };
    BEGIN_MESSAGE_MAP(My,DFrameWnd)
    ON_WM_PAINT()
    END_MESSAGE_MAP()
    class Hello:public CWinApp
    { public:
      Hello():CWinApp("Hello World!")
      {}
      BOOL InitInstance()
      { CFrameWnd *My=new My;
      m_pMainWnd=My;
      My->Create (NULL,(LPCTSTR)"Hello");
      My->ShowWindow (SW_SHWO);
      return TRUE;
      }
    } HelloWorld; 
    总是在最后一行出错,不是代码问题,这是我从书上抄下来的,我不知道错在哪儿。请给出错误原因和解决方法。谢谢!
    并发信至:[email protected]
    因为我不知道怎么进这个论坛,下次不一定能找到这个帖子。