本打算在对话框上做一个CListCtrl,对其中数据进行操作,
在做完后,发现点对话框上的叉号按钮无法退出,而是对控件中的记录进行删除,
后来添加退出按钮,按钮响应函数里面放了    SendMessage(WM_DESTROY,0,0); 也没有反应
请问一下,这是为什么啊?

解决方案 »

  1.   

    重载OnDestroy()试试看,用classvizard 给你的对话框添加WM_DESTROY消息
      

  2.   

    对话框类的OnCancel()函数你重载了吧
      

  3.   

    重载之后可以弹出对话框aa,就是关闭不了
    我怎么也不明白为什么叉号按钮在调用删除CListCtrl中内容的函数,void CUserAdmin::OnDestroy() 
    { MessageBox("aa");
    CDialog::OnDestroy();

    // TODO: Add your message handler code here
    }
      

  4.   

    点叉号在调用这个这个函数,void CUserAdmin::OnButtonDelete1() 
    {
    //    MessageBox("ready to delete.");
    if (nPos!=-1)
    OnMenuitemDelete() ;
    else MessageBox("请选择要删除得项..");}
    对关闭对话框的消息都没有处理,也没有重载各种函数,怎么会调用这个函数呢
      

  5.   

    不好意思,这里怎么样才能看出来? 没有找到在哪里触发调用CUserAdmin::OnButtonDelete1() line 291CUserAdmin::OnButtonDelete1() line 291
    _AfxDispatchCmdMsg(CCmdTarget * 0x0012f87c {CUserAdmin hWnd=0x000a0b1a}, unsigned int 2, int 0, void (void)* 0x004010be CUserAdmin::OnButtonDelete1(void), void * 0x00000000, unsigned int 12, AFX_CMDHANDLERINFO * 0x00000000) line 88
    CCmdTarget::OnCmdMsg(unsigned int 2, int 0, void * 0x00000000, AFX_CMDHANDLERINFO * 0x00000000) line 302 + 39 bytes
    CDialog::OnCmdMsg(unsigned int 2, int 0, void * 0x00000000, AFX_CMDHANDLERINFO * 0x00000000) line 97 + 24 bytes
    CWnd::OnCommand(unsigned int 2, long 592700) line 2099
    CWnd::OnWndMsg(unsigned int 273, unsigned int 2, long 592700, long * 0x0012f598) line 1608 + 28 bytes
    CWnd::WindowProc(unsigned int 273, unsigned int 2, long 592700) line 1596 + 30 bytes
    AfxCallWndProc(CWnd * 0x0012f87c {CUserAdmin hWnd=0x000a0b1a}, HWND__ * 0x000a0b1a, unsigned int 273, unsigned int 2, long 592700) line 215 + 26 bytes
    AfxWndProc(HWND__ * 0x000a0b1a, unsigned int 273, unsigned int 2, long 592700) line 379
    AfxWndProcBase(HWND__ * 0x000a0b1a, unsigned int 273, unsigned int 2, long 592700) line 220 + 21 bytes
    USER32! 77d18734()
    USER32! 77d18816()
    USER32! 77d189cd()
    USER32! 77d196c7()
    CWinThread::PumpMessage() line 853
    CWnd::RunModalLoop(unsigned long 4) line 3489 + 19 bytes
    CDialog::DoModal() line 539 + 12 bytes
    CDatabaseBackupClientDlg::OnMenuitemUser() line 256
    _AfxDispatchCmdMsg(CCmdTarget * 0x0012fe60 {CDatabaseBackupClientDlg hWnd=0x00100a70}, unsigned int 32774, int 0, void (void)* 0x004011f9 CDatabaseBackupClientDlg::OnMenuitemUser(void), void * 0x00000000, unsigned int 12, AFX_CMDHANDLERINFO * 0x00000000) line 88
    CCmdTarget::OnCmdMsg(unsigned int 32774, int 0, void * 0x00000000, AFX_CMDHANDLERINFO * 0x00000000) line 302 + 39 bytes
    CDialog::OnCmdMsg(unsigned int 32774, int 0, void * 0x00000000, AFX_CMDHANDLERINFO * 0x00000000) line 97 + 24 bytes
    CWnd::OnCommand(unsigned int 32774, long 0) line 2099
    CWnd::OnWndMsg(unsigned int 273, unsigned int 32774, long 0, long * 0x0012fb74) line 1608 + 28 bytes
    CWnd::WindowProc(unsigned int 273, unsigned int 32774, long 0) line 1596 + 30 bytes
    AfxCallWndProc(CWnd * 0x0012fe60 {CDatabaseBackupClientDlg hWnd=0x00100a70}, HWND__ * 0x00100a70, unsigned int 273, unsigned int 32774, long 0) line 215 + 26 bytes
    AfxWndProc(HWND__ * 0x00100a70, unsigned int 273, unsigned int 32774, long 0) line 379
    AfxWndProcBase(HWND__ * 0x00100a70, unsigned int 273, unsigned int 32774, long 0) line 220 + 21 bytes
    USER32! 77d18734()
    USER32! 77d18816()
    USER32! 77d189cd()
    USER32! 77d196c7()
    CWinThread::PumpMessage() line 853
    CWnd::RunModalLoop(unsigned long 4) line 3489 + 19 bytes
    CDialog::DoModal() line 539 + 12 bytes
    CDatabaseBackupClientApp::InitInstance() line 59 + 11 bytes
    AfxWinMain(HINSTANCE__ * 0x00400000, HINSTANCE__ * 0x00000000, char * 0x00141f39, int 1) line 39 + 11 bytes
    WinMain(HINSTANCE__ * 0x00400000, HINSTANCE__ * 0x00000000, char * 0x00141f39, int 1) line 30
    WinMainCRTStartup() line 330 + 54 bytes
    KERNEL32! 7c816fd7()
      

  6.   

    OnMenuitemDelete() ; 内的代码呢?
    也贴出来,如果不行的话就换另外一种方式,不一定就死要那种方法。
      

  7.   

    你重载入消息 wm_close
    响应他的函数
    void CMainFrame::OnClose() 
    {
    // TODO: Add your message handler code here and/or call default
    MessageBox("111");

    CFrameWnd::OnClose();
    }就可以解决你的问题了