我建立了两个 Dialog
Dialog A, Dialog B
A 中有个按钮 点击它,A OnOK,B doModal,出现 B, B是 Popup的,  
在B中要响应 键盘的按键但是 直接 在B中处理 OnKeyDown 不行但是如果我在B的OnInitDialog中最后 return false 就可以 在 OnKeyDown 捕捉键盘的消息进行处理了 return true 不行为什么呢? 有没有人可以 解答一下 这个问题? 谢谢了

解决方案 »

  1.   

    //   return   TRUE   unless   you   set   the   focus   to   a   control 
    你向一个控件设置焦点就用return false
      

  2.   

    重载虚函数PreTranslateMessage中处理WM_KEYDOWN消息
      

  3.   

    return FALSE;时,焦点在对话框上,因而可以响应OnKeyDown;return TRUE时,焦点在default control上,除非子类化该control,否则没机会处理WM_KEYDOWN。
      

  4.   

    用PreTranslateMessage来捕获按键消息,自己可以方便的过滤
      

  5.   

    如果,我return TRUE了,可不可以在后面进行某些处理,使达到和return FALSE 一样的效果?如果有的话怎么处理?
      

  6.   

    PreTranslateMessage可以处理,我想知道,我提问的问题的答案
      

  7.   

    如果,我return TRUE了,可不可以在后面进行某些处理,使达到和return FALSE 一样的效果?如果有的话怎么处理?
      

  8.   

    方法一:子类化控件,转发WM_KEYDOWN至父窗口;
    方法二:在后面进行某些处理,如找个地方SetFocus(hDlg);
      

  9.   

    我在后面,SetFocus,不大管用啊……
      

  10.   

    不是在WM_INITDIALOG后, 是在WM_COMMAND之类的消息后面