谁捉到他这20分就是你的了(20分)

  • 主题发起人 主题发起人 我爱PASCAL
  • 开始时间 开始时间

我爱PASCAL

Unregistered / Unconfirmed
GUEST, unregistred user!
[:)]怎样捕捉wm_setfocus
 
以前我也想捉住它,但確實不好捉,<br>不知你是要怎樣應用,若是要使用有焦點的控件用高亮顯示的話,我倒有個方法.
 
TForm1 = class(TForm)<br> &nbsp; &nbsp;...<br> &nbsp;public<br> &nbsp; &nbsp;function SetFocusedControl(Control: TWinControl): Boolean; override;<br> &nbsp; &nbsp;...<br> &nbsp;end;<br><br>implememtation<br>...<br>function TForm1.SetFocusedControl(Control: TWinControl): Boolean;<br>begin<br> &nbsp;<br> &nbsp;//你的处理,Control 是将获得焦点的控件,若设 Result := False,<br> &nbsp;//则控件不能获得焦点<br> &nbsp;Result := inherited SetFocusedControl(Control);//缺省处理<br>end;
 
我爱PASCAL大侠,真的不知道你做什么?<br>天天搞捉东西。<br>捕捉那里的消息呢?<br>如果是应用程序的,我想既然WINDOWS的原理是这样的。<br> &nbsp; while getmessage(@msg ,0,0,0) do//在消息堆栈中取消息。<br> &nbsp; begin<br> &nbsp; &nbsp; //我感觉在转换前可以作写文章的,不知道我的想法是不是可笑。。<br> &nbsp; &nbsp; //如果可以的话,你的什么消息都可以捕捉,当然直接处理回调函数,可是这样和处理 winproc没有什么两样。<br> &nbsp; &nbsp; //转换消息,<br> &nbsp; &nbsp; //发送消息<br> &nbsp; end;
 
wm_setfocus好像只能重载才行
 
本程序的直接在消息处理过程中处理就可以了,如果是全局的要用钩子。。
 
我就是想得到应用程序窗口在得到焦点或处于活动状态时进行处理,<br>我后来想了一下用application.onactive事件就可以了,谢谢大家
 
方法一,继承一个WNDPROC就行.<br>方法二,通过WM_wm_setfocus过程就行.
 
后退
顶部