一个难以解决的小问题,你想试试吗?(20分)

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

yangmingnian

Unregistered / Unconfirmed
GUEST, unregistred user!
问题是这样的,我声明了一个窗口类(从TForm继承),在类中我注册了系统全局热键(Alt+F4),然后声明了一个热键处理函数如下:
procedure HotKeyDown(var Msg: Tmessage)
message WM_HOTKEY;
后来考虑到子类窗口(子类窗口在同一时间只有一个,不会发生热键冲突现象)中可能要自己单独处理该热键事件,于是便改成如下模式:
procedure HotKeyDown(var Msg: Tmessage)
message WM_HOTKEY
virtual;
然后在子类窗口中声明如下:
procedure HotKeyDown(var Msg: Tmessage)
message WM_HOTKEY
override;
结果编译时出了一大堆错误,后来一查书才知道消息句柄方法根本不能使用Virtual,Dynamic,Override,Abstract等指令字,害得我白忙活了一场。
不知有哪位大侠能帮我解决这个问题,实现代码的重用性!(我可不想在每个子类窗口中都重新注册全局热键,如果要注册很多热键的话,那岂不是很麻烦)
 
分数少了点?见笑了!
 
注册一个ACTION 就可以吧!
 
搬個板凳來聽課。
 
To hpretty:
具体怎么做呢?如果知道请帮帮我,给出程序代码或提示!
大家既然来了,就说两句嘛,不要吝啬一点口水哦 [:)]
 
好象定义消息处理过程的本身就是对Borland的VCL中的预定义的处理过程进行Override.
要Override的话,就用不同的名称命名算了。
 
把消息转换成事件就可以了!!!

father:
procedure DoWMXXXX
virtual;
proceduer WMXXXX()
DoWMXXX
sun:
procedure DoWMXXX
override;
 
to wlmmlw:
你的方法果然好使,这分该你得!!
 
后退
顶部