梦幻西游天眼珠合成:delphi的自定义过程何时被调用?

来源:百度文库 编辑:杭州交通信息网 时间:2024/04/25 22:19:10
delphi的自定义过程何时被调用?如下例中的"procedure WMHotKey(var Msg : TWMHotKey); message WM_HOTKEY;"这个过程

源程序:

unit Unit1;
interface
uses
Windows, Messages, Forms, Dialogs, Classes, Controls, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
private
{热键标识ID}
id: Integer;
procedure WMHotKey(var Msg : TWMHotKey); message WM_HOTKEY;
{ Privat-Declarations}
public
{ Public-Declarations}
end;
var
Form1 : TForm1;
implementation
{$R *.DFM}

{捕获热键消息}
procedure TForm1.WMHotKey (var Msg : TWMHotKey);
begin
if msg.HotKey = id then
ShowMessage(’Ctrl+Alt+R键被按下!’);
form1.Visible :=true;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
{首先判断程序是否已经运行}
if GlobalFindAtom(’MyHotkey’) = 0 then
begin
{注册全局热键Ctrl + Alt + R}
id:=GlobalAddAtom(’MyHotkey’);
RegisterHotKey(handle,id,MOD_CONTROL+MOD_Alt,82);
end
else
halt;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
close;
end;

{退出时释放全局热键}
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
UnRegisterHotKey(handle,id);
GlobalDeleteAtom(id);
end;
end.
谢谢ramu的答复!!
我是想知道delphi中的过程调用机制,如我的例子中“procedure WMHotKey(var Msg : TWMHotKey); message WM_HOTKEY;”这个过程,它是如何被调用的。又如果我编了一个非事件处理过程,而且也未在任何过程的代码中引用它,请问这个过程是否永远不会被调用????
知道的请说详细点

一般自己定义过程和函数都是为了把公用的代码封装到一起。像你所说“又如果我编了一个非事件处理过程,而且也未在任何过程的代码中引用它,请问这个过程是否永远不会被调用???? ” 那么你定义它的目的是什么呢 ?
自己定义的方法当然要自己安排它在哪里出现了。
比如 我自己定义一个函数 目标是把两个文本框的内容合成一个字符串
function hecheng(edit1:Tedit;edit2:Tedit):string;
begin
result:=edit1.text+edit2.text;
end;

当然你问的问题就来了 “也未在任何过程的代码中引用它,请问这个过程是否永远不会被调用???? ”。

当然你不调用他他就会在那永远呆着了

当你想把2个文本框内容输出的时候可以
showmessage(hecheng(edit1,edit2));

你调用他 他就激活了。

你也可以这样想 DELPHI里 有无限个过程和函数 他们都是定义好了放在库里面的 当你想用的时候就找出来使用。

你通过RegisterHotKey函数注册了热键
那么当此热键按下时,触发message过程