如何让一个VC的对话框程序响应键盘消息?我不知道在这样的基于对话框的程序中,如何使用SetFocus使得对话框窗口获得输入焦点,从而能够响应键盘消息.

解决方案 »

  1.   

    基于对话框的程序,如果窗体上有控件,由于如果窗体处于活动状态,那么将必有一个控件获得焦点,不能通过在ClassWizard中添加WM_KEYDOWN来响应键盘输入。一个简单的办法就是重载CWnd::PreTranslateMessage,即BOOL CDlgDlg::PreTranslateMessage(MSG* pMsg) 
    {
    // TODO: Add your specialized code here and/or call the base class
    if(pMsg->message == WM_KEYDOWN)
    {
    MessageBox("ssd");
    }

    return CDialog::PreTranslateMessage(pMsg);
    }
      

  2.   

    非常谢谢 demetry(智者橡木)还想问一下:
    如果可以确定是WM_KEYDOW的消息了,现在是否可以在CWnd::PreTranslateMessage中可以得到虚拟键代码,并且可以根据特定的键代码(如VK_F5,VK_F6)调用相应的处理程序.