为什么不能捕获WM_KEYDOWN消息?(50分)

  • 主题发起人 主题发起人 yzykjh
  • 开始时间 开始时间
Y

yzykjh

Unregistered / Unconfirmed
GUEST, unregistred user!
procedure MyKeyDown(var msg: TWMKEYDOWN); Message WM_KEYDOWN;<br><br>procedure TForm1.MyKeyDown(var msg: TWMKEYDOWN);<br>begin<br>&nbsp; &nbsp;if (msg.Msg=WM_KEYDOWN) and (msg.KeyData=27) then begin<br>&nbsp; &nbsp; &nbsp; showmessage('ok');<br>&nbsp; &nbsp; &nbsp; close;<br>&nbsp; &nbsp;end;<br>end;<br>
 
将msg.keydata 换成 msg.CharCode!
 
procedure MyKeyDown(var msg: TWMKEYDOWN); Message WM_KEYDOWN;<br><br>procedure TForm1.MyKeyDown(var msg: TWMKEYDOWN);<br>begin<br>&nbsp; if (msg.Msg=WM_KEYDOWN) and (msg.KeyData=VK_Return) then begin<br>&nbsp; &nbsp; &nbsp;showmessage('ok');<br>&nbsp; &nbsp; &nbsp;close;<br>&nbsp; end;<br>end;<br>
 
&nbsp; if (msg.Msg=WM_KEYDOWN) and (Msg.CharCode=VK_RETURN ) then<br>&nbsp; &nbsp;begin<br>&nbsp; &nbsp; &nbsp;showmessage('ok');<br>&nbsp; &nbsp; &nbsp;close;<br>&nbsp; end;
 
楼上的朋友!<br>procedure MyKeyDown(var msg: TWMKEYDOWN); Message WM_KEYDOWN;<br><br>procedure TForm1.MyKeyDown(var msg: TWMKEYDOWN);<br>begin<br>showmessage('ok'); &nbsp;//就连这句也没执行,说明消息什么被捕获。<br>&nbsp;if (msg.Msg=WM_KEYDOWN) and (msg.KeyData=VK_Return) then begin<br>&nbsp; &nbsp; showmessage('ok');<br>&nbsp; &nbsp; close;<br>&nbsp;end;<br>end;<br>
 
to 楼主<br> 我在回答你这个问题前已经作了测试,完全可行
 
我的就是不行。这样,把你OK的代码贴出来好吗?
 
我试了一下,如果窗体什么都没有,消息就能捕获。如果有控件,消息就不能捕获。
 
是啊我就是在没有任何控件的状态下试验的,完全可以的!<br>有了控件好像就因为有了焦点……不起作用了
 
把窗体的KeyPreview设为True
 
to 楼主<br> 我已经前做的打字软件的时候也遇到过这种情况,请再试一试。<br> Form1.KeyPreview := True;
 
将form的keyPreview设为true再试试江南大米的方法。
 
按下回复后才发现楼上一位已经在我前面了,不好意思,楼上一位,如果我看到你答复的话,我一定不答了,只慢了几秒钟,呵呵
 
我换了个写法,你试试呢?<br>procedure TForm1.WmKeyDown(var Msg: TMsg; var Handled: Boolean);<br>begin<br>&nbsp; &nbsp;Handled:=False;<br>&nbsp; &nbsp;if (Msg.message=WM_KEYDOWN) and (Msg.WParam=VK_Return) then begin<br>&nbsp; &nbsp;showmessage('ok');<br>&nbsp; &nbsp;close;<br>end;<br>end;<br><br>procedure TForm1.FormCreate(Sender: TObject);<br>begin<br>&nbsp; &nbsp;Application.OnMessage:=WmKeyDown;<br>end;<br>
 
有一点问题,我的那个连消息窗口的VK_Return也捕获了,^_^
 
>>楼上一位,如果我看到你答复的话,我一定不答了<br>我也是
 
接受答案了.
 
后退
顶部