ESC最终要调用OnCancel(),ENTER要调用DEFAULT BUTTON的OnClick,F1要调用HELP,可以在PreTransMessage()中处理

解决方案 »

  1.   

    能具体点吗,在PreTransMessage()中怎样能判断键盘消息?多谢!
      

  2.   

    注意MSG结构中的各成员.message,wParam,lParam是非常重要的.
    但愿以后再也没人提关于这个的问题了.
      

  3.   

    我已试过WM_KEYDOWN,WM_KEYUP,WM_SYSKEYDOWN,WM_HOTKEY,WM_CHAR,
    能截取消息,但无法阻止缺省的操作,请有经验的高手指点一下。多谢!
      

  4.   

    我已试过WM_CHAR,WM_KEYDOWN,WM_SYSKEYDOWN,WM_HOTKEY,
    有的能得到消息,确无法阻止缺省操作,请有经验的高手指点,
    以免在下绕弯子,多谢!
      

  5.   

    ESC:把Cancel按钮的消息处理函数中的CDialog::OnCancel()屏蔽掉,如没有Cancel键,自己添加
    void CMyDlg::OnCancel() 
    {
    // TODO: Add extra cleanup here

    //CDialog::OnCancel();
    }
    Enter:为Ok按钮
    void CMyDlg::OnOK() 
    {
    // TODO: Add extra validation here

    //CDialog::OnOK();
    }
    F1待定:)
      

  6.   

    F1:WinHelp消息处理函数(在ClassWizar中找WinHelp消息)
    void CMyDlg::WinHelp(DWORD dwData, UINT nCmd) 
    {
    //CDialog::WinHelp(dwData, nCmd);
    }记得给我加分:)
      

  7.   

    多谢!
    但是“//CDialog::OnCancel();“后,
    用ALT+F4关闭不了对话框,怎么办?
      

  8.   

    你在WM_CLOSE消息中添加CDialog::OnCancel(); 
    就OK了:)void CTestHelpDlg::OnClose() 
    {
    // TODO: Add your message handler code here and/or call default
    CDialog::OnCancel();
    CDialog::OnClose();
    }