有一个对话框,其中包含一些可以获得焦点的控件(比如EditBox,Button等)
问题是:对话框我使用资源编辑器来编辑出来,就算我取消了所有控件的焦点,使用SetFocus和WM_KILLFOCUS消息来取消,可是当我按下键盘的空格的时候,还是有一个控件响应到了键盘消息(button可以看到被按下的动作或者editbox里面被打了一个空格进去)。如果我使用CXXX.Create来动态创建editbox或者button也一样。我怎么控制这种行为?取消掉这个自动的动作?
另确认一点:
是不是任何一个对话框,若包含可获得键盘输入的控件,则必定会有一个控件会默认获得键盘的输入动作?

解决方案 »

  1.   

    ctrl+t(或者是alt+t),你就可以知道拉.
      

  2.   

    重载 PreTranslateMessage(MSG* pMsg)
    可以控制任何输入
      

  3.   

    PreTranslateMessage是可以拦截到可是还是无法取消掉默认的那个焦点呢?
    3楼的意思是,通过这个来拦截所有的消息,然后控制所有的键盘输入消息吗?
    原理上是可行,实现起来可能会很复杂有没有相对简单点的办法?