代码如下:
unit Unit1;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, shellapi, StdCtrls;const
wm_MyCallback = wm_User+100;
type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
//向托盘添加图标
Procedure AddTrayIcon; procedure AppMessage(var Msg: TMsg; var Handled: Boolean); public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}
const
MsgStr='iconmsg';
procedure TForm1.AppMessage(var Msg: TMsg; var Handled: Boolean);
begin
if Msg.message =wm_MyCallback then
begin
showmessage('wm_MyCallback');
end
else
inherited;
end;Procedure TForm1.AddTrayIcon;
//向任务栏添加图标
Var IconData : TNotifyIconData;
Begin
With IconData do Begin
cbSize := SizeOf(IconData);
Wnd := self.Handle;
uID := 0;
uFlags := nif_Icon Or nif_Message Or nif_Tip;
uCallBackMessage := wm_MyCallback;
hIcon := Application.Icon.Handle; //LoadIcon(hInstance,'MYICON');
StrCopy(szTip,PChar('rola'));
End;
Shell_NotifyIcon(nim_Add,@IconData);
End;procedure TForm1.Button1Click(Sender: TObject);
begin
// self.Hide;
AddTrayIcon;
end;procedure TForm1.Button2Click(Sender: TObject);
//删除任务栏图标
Var IconData : TNotifyIconData;
Begin
With IconData do Begin
cbSize := SizeOf(IconData);
Wnd := self.Handle;
uID := 0;
uFlags := nif_Icon Or nif_Message Or nif_Tip;
uCallBackMessage := wm_MyCallBack;
hIcon := Application.Icon.Handle; //LoadIcon(hInstance,'MYICON');
StrCopy(szTip,PChar('rola'));
End;
Shell_NotifyIcon(nim_delete,@IconData);
End;procedure TForm1.FormCreate(Sender: TObject);
begin
Application.OnMessage := AppMessage;
end;end.请教:在AppMessage中为何接收不到消息wm_MyCallback
unit Unit1;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, shellapi, StdCtrls;const
wm_MyCallback = wm_User+100;
type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
//向托盘添加图标
Procedure AddTrayIcon; procedure AppMessage(var Msg: TMsg; var Handled: Boolean); public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}
const
MsgStr='iconmsg';
procedure TForm1.AppMessage(var Msg: TMsg; var Handled: Boolean);
begin
if Msg.message =wm_MyCallback then
begin
showmessage('wm_MyCallback');
end
else
inherited;
end;Procedure TForm1.AddTrayIcon;
//向任务栏添加图标
Var IconData : TNotifyIconData;
Begin
With IconData do Begin
cbSize := SizeOf(IconData);
Wnd := self.Handle;
uID := 0;
uFlags := nif_Icon Or nif_Message Or nif_Tip;
uCallBackMessage := wm_MyCallback;
hIcon := Application.Icon.Handle; //LoadIcon(hInstance,'MYICON');
StrCopy(szTip,PChar('rola'));
End;
Shell_NotifyIcon(nim_Add,@IconData);
End;procedure TForm1.Button1Click(Sender: TObject);
begin
// self.Hide;
AddTrayIcon;
end;procedure TForm1.Button2Click(Sender: TObject);
//删除任务栏图标
Var IconData : TNotifyIconData;
Begin
With IconData do Begin
cbSize := SizeOf(IconData);
Wnd := self.Handle;
uID := 0;
uFlags := nif_Icon Or nif_Message Or nif_Tip;
uCallBackMessage := wm_MyCallBack;
hIcon := Application.Icon.Handle; //LoadIcon(hInstance,'MYICON');
StrCopy(szTip,PChar('rola'));
End;
Shell_NotifyIcon(nim_delete,@IconData);
End;procedure TForm1.FormCreate(Sender: TObject);
begin
Application.OnMessage := AppMessage;
end;end.请教:在AppMessage中为何接收不到消息wm_MyCallback
自定义的消息,比如说,你首先定义一个消息wm_callMessage;然后 编写一个消息的处理过程 procedure SelfMessage(var msg:Tmessage);message Wm_callMessage;中间如果鼠标双击消息发送了,就执行一部分代码。然后通过你的uCallBackMessage ,传送给你的AddTrayIcon过程,才能执行你的字定义的托盘消息部分
procedure mymessageproc(var msg:Tmsg);message wm_MyCallback; procedure TForm1.mymessageproc(var msg:Tmsg);
begin
if msg.lParam = WM_LBUTTONDOWN then
showmessage('mymessage');
end;
还是不行,但是把if条件去掉就会有message框,是不是 msg.lparam有问题啊