我在Dialog中放入了一个其它控件后,OnKeyDown的事件就不起作用了,请问一下怎么解决。
还有一个问题就是像Esc,Enter这些键好像在OnKeyDown不起作用,正确的应该写在什么事件中?

解决方案 »

  1.   

    请说明:您的Dialog是怎么创建的,它是您的程序主窗口还是别的,还有没有其他窗口,其他控件是什么控件,您到底想问什么?
      

  2.   

    To kvls(冰茶):
    我创建的一个基于Dialog的工程啊。
    当然是程序主窗口。
    如果Dialog上什么控件也没有就可以接受按键,但只要有其它控件就不行。主要目的:
        在OnKeyDown的事件中处理所有按键事件,关键在于Dialog有了控件之后,Dialog就收不到消息了。
      

  3.   

    在edit控件中按下回车或escBOOL CTest6Dlg::PreTranslateMessage(MSG* pMsg) 
    {
    if( pMsg->message == WM_KEYDOWN )
    {   
    if(pMsg->hwnd == GetDlgItem(IDC_EDIT1)->m_hWnd)
    {
    switch( pMsg->wParam )
    {
    case VK_RETURN:
    AfxMessageBox("enter");
    return TRUE;
    case VK_ESCAPE:
    AfxMessageBox("esc");
    return TRUE;
    }
    }
    }
    return CDialog::PreTranslateMessage(pMsg);
    }
      

  4.   

    BOOL CTest6Dlg::PreTranslateMessage(MSG* pMsg) 
    {
    if( pMsg->message == WM_KEYDOWN )
    {   
    if(pMsg->hwnd == GetSafeHwnd())
    {
    //本窗口的WM_KEYDOWN
    }
    }
    return CDialog::PreTranslateMessage(pMsg);
    }