OnKeyDown()
判断ESC按键
SetFocus(NULL)

解决方案 »

  1.   

    不行的,这个我试过了,OnKeyDown()
    根本没有走进来
      

  2.   

    在PreTranslateMessage()中拦截WM_KEYDOWN消息处理。
      

  3.   

    在PreTranslateMessage()中拦截WM_KEYDOWN消息处理
      

  4.   

    是对话框程序吧
    重载OnCancel
    在里面SetFocus就行了
    如果是其它,那就要用上面五星级用户提的建议了
      

  5.   

    看看这段
    BOOL CReturn_TabDlg::PreTranslateMessage(MSG* pMsg)
    {
    ...
    if (WM_KEYDOWN == pMsg->message && VK_RETURN == pMsg->wParam)
    {
    CWnd *wnd = GetFocus();
    if (NULL != wnd)
    {
    char str[256];
    CString ClassName = _T("Button");
    GetClassName(wnd->m_hWnd, str, 256);
    if (str == ClassName)
    {
    UINT i = wnd->GetDlgCtrlID();
    SendMessage(WM_COMMAND, i, (LPARAM)wnd->m_hWnd);
    }
    }
    CWnd *mwnd = GetNextDlgTabItem(wnd);
    if (mwnd)
    {
    mwnd->SetFocus();
    return TRUE;
    }
    }
    ...
    }
      

  6.   

    BOOL CXXDlg::PreTranslateMessage(MSG *pMsg)//防止按下Enter和Esc键退出
    {
    if ( pMsg->message == WM_KEYDOWN )
    {
    switch(pMsg->wParam)
    {
    case VK_ESCAPE:
    return TRUE; //直接返回TRUE
    break;
    case VK_RETURN:
    return TRUE;
    break;
    }
    }
    return CDialog::PreTranslateMessage(pMsg);
    }
      

  7.   

    PreTranslateMessage,按ESC键时候,这个函数没有调到,是怎么回事
      

  8.   

    按ESC键时候,这个函数没有调到,是怎么回事
    ?你如何判断的?
      

  9.   

    有没有完整的代码段,参考一下,我想捕捉ESC键,可是试了几次都没有用
      

  10.   

    上面的还不够完整啊在PreTranslateMessage中处理啊楼主你把你在PreTranslateMessage中是怎么处理的贴一下?