请教各位高手,怎么在控件里替代一个外置控件的消息处理器!!!(200分)

  • 主题发起人 主题发起人 xt_nibin
  • 开始时间 开始时间
X

xt_nibin

Unregistered / Unconfirmed
GUEST, unregistred user!
比如,在我的控件里指定了一个EDIT1控件,我想接管EDIT1控件的按键消息,只要EDIT1按回车或ESC键,则把焦点还给Edit1的上级控件即我的控件,其它键则调用原来的消息处理器;不能依靠Edit1本身的任何事件(比如:OnKeyDown、OnKeyPress等),因为EDIT1等控件全是在别人设计时指定的,而且控件也是无法预知的,比如可能是Edit、ComboBox、CheckBox、DateTimePicker及Button等,但都是TWinControl下的控件,小弟想是不是可以自定义一个消息处理器,在指定一个控件后,把这个控件的消息处理器替代成自定义消息处理器,在自定义消息处理器里判断是否按下了什么键,然后再调用原消息处理,但小弟不知道怎么替代原控件的消息处理器或是小弟的这个想法有问题,还请高手指点
 
可以自定义消息处理过程~或处理Application.onmessage事件~但这一切的基础是要知道哪个控件的Handle~不知道你能不能得到那些控件的Handle~~
 
楼上你的意思是在我的控件里接管应用的ONMESSAGE事件吗?这种方法我在别的控件里见过,不过不知道还有什么直接替代控件的消息处理器的方法没有
 
重写控件的wndproc过程, 在此过程中处理特定的消息, 其他消息仍肜原有的wndproc
 
如果仅仅是按回车或ESC的话, 在Form的onkeydown, onkeypress中处理就可以了, 同时form的keypreview设为true
 
后退
顶部