关于键盘消息!Help Me !!! (200分)

  • 主题发起人 主题发起人 强@子
  • 开始时间 开始时间

强@子

Unregistered / Unconfirmed
GUEST, unregistred user!
*** Help Me !!! ****
如何让从TGraphicControl下继承的控件能够接受键盘消息,
如Delete,Ctrl+C,Ctrl+V,Ctrl+A;
最好不要用键盘钩子;
我试过用窗口过程但接受不到;
*** Help Me !!! ****
 
******** 分不够再加!!! ********
 
可从TWinControl继承,作为TGraphicControl的容器。
 
**谢谢zw84611***
**不过我写的是图形控件,不能从TWinControl继承。有没有其它方法?
 
*******这问题我等着救命********
 
帮你顶,自己也学!
 
为什么不自定义消息?
 
registerhotkey 注册热键
procedure onHotKey(var msg: TMessage);message wm_hotKey; //在这里写入响应该代码
 
for 一少
能给出原码吗?
 
行啊,稍等
 
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs;

type
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
private
procedure onHotKey(var msg: Tmessage);message wm_hotKey;
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
RegisterHotkey(Handle,GlobalAddAtom(pchar('ctrlA')),MOD_CONTROL, 65);

end;

procedure TForm1.onHotKey(var msg: Tmessage);
begin
if (msg.LParamLo = mod_control) and (msg.LParamHi = 65) then begin
SetForegroundWindow(handle);
showmessage('你按了Ctrl+a');
end;
end;

end.
 
TGraphicControl好像不能收到键盘消息。TGraphicControl收到鼠标消息也不是自己收到的,
而是父控件收到后转发给它的。我想不用其它方法是不可能的。
 
fro 一少,
我试过在控件单元写如下代码:
Initialize
RegisterHotkey(Handle,GlobalAddAtom(pchar('ctrlA')),MOD_CONTROL, 65);
finalization
UnregisterHotKey(Handle,GlobalAddAtom(pchar('ctrlA')));
不过接受不到;
我写的控件是动态加载的,
连其Parent也是在运行是才能确定。
 
fro 一少,
*****在线等****
 
从TGraphicControl派生时,加入Thotkey。
 
可以注册系统热键的方法实现RegisterHotKey
然后在编写wm_hotkey消息处理函数。
 
改从TCustomControl继承
 
我提个思路,不知可行不可行,你试一下
const wm_myhotkey = wm_user + 100 //自定义消息
既然TGraphicControl不能收到wm_hotkey消息,你何不再继承一个TCustomControl,用
TCustomControl来捕获wm_hotkey,捕获到后向TGraphicControl发送自定义消息wm_myhotkey
这样不就能响应系统的热键消息了?
 
用TCustomControl可以满足你的作图需要吗?他继承自WinControl,但是有Cancas,和Paint
 
同意TCustomControl。事实上borland也推荐这么做。
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
636
import
I
I
回复
0
查看
618
import
I
后退
顶部