对话框上有一个按钮
对话框的OnKeyDown就不会掉用
我知道是那个按钮具有了焦点,导致对话框的OnKeyDown不会执行
有什么办法让他执行呢?

解决方案 »

  1.   

    就是对话框上没有任何可以获取焦点的控件,对话框的OnKeyDown就会被调用
    如果有,焦点总在那些控件上,有什么办法使焦点即使在控件上对话框的OnKeyDown也会被调用
      

  2.   

    重载PreTranslateMessage(MSG* pMsg)在里面判断处理.
      

  3.   

    楼上是这样吗?但是我不明白这和重载  OnOK()函数达到的效果有什么区别
    BOOL CCRichEditCtrlDlg::PreTranslateMessage(MSG* pMsg) 
    {


    if(WM_KEYDOWN == pMsg->message)
    {
    int nKey = (int) pMsg->wParam;    

    if(VK_ESCAPE == nKey)
    return true;
    } return CDialog::PreTranslateMessage(pMsg);

    }
      

  4.   

    顶,重载PreTranslateMessage在得到KeyDown之前首先截获他,然后对其进行判断
      

  5.   

    重载PreTranslateMessage KeyDown的时候不一定是VK_RETURN吧汗 既然功能实现了那还有什么问题呢?条条大路通罗马
      

  6.   

    PreTranslateMessage中拦截按键好了
      

  7.   

    在子窗体的响应函数中
    PostMessage(::AfxGetApp()->m_pMainWin,WM_KEYDOWN,wParam,lParam)