老话题---托盘程序的消息

guolinchao 2002-10-18 10:47:31
我做了个托盘程序.但是不知怎么不相应消息.我有鼠标点击托盘图标时没有相应.
请高手帮帮我!!!

const WM_Icon=WM_USER + 100;


implementation
var IconData:TNotifyIconData;


procedure TFrmMain.Mini(Sender:TObject); //最小化要处理的事件
begin
Application.Initialize;
Hide;
end;

procedure TFrmMain.IconMessage(var MsgIcon:TMessage); //消息事件
var PMouse:TPoint;
begin
if MsgIcon.Msg = WM_Icon then
begin
case MsgIcon.LParam of
WM_RButtonDown:
begin
SetForegroundWindow(Handle);
GetCursorPos(PMouse);
PopMIcon.Popup(PMouse.X,PMouse.Y);
end;
end;
show;
end
else
inherited;
end;


procedure TFrmMain.FormCreate(Sender: TObject);
begin
SendMessage(ListBDeliver.Handle,LB_SETHORIZONTALEXTENT, 1300, 0);
SendMessage(ListBStatus.Handle,LB_SETHORIZONTALEXTENT, 1300, 0);
IconData.cbSize:=SizeOf(IconData);
IconData.Wnd:=Application.Handle;
IconData.uID:=1000;
IconData.uFlags:=NIF_MESSAGE or NIF_ICON or NIF_TIP;
IconData.uCallbackMessage:=WM_Icon;
IconData.hIcon:=Application.Icon.Handle;
IconData.szTip:='迅捷短信单机版';
Shell_NotifyIcon(NIM_ADD,@IconData);
Application.OnMinimize:=FrmMain.Mini; //最小化时要处理的事件
end;
...全文
29 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
guolinchao 2002-10-18
  • 打赏
  • 举报
回复
谢谢 happyjoe(尘土飞扬) ;
按你的方法,问题解决了,谢谢您.
为什么要From1.Handle 而不用Application.handle呢??
我现在就给分
这个问题纠缠了我2天了.
happyjoe 2002-10-18
  • 打赏
  • 举报
回复
IconData.Wnd:=Application.Handle
改为
IconData.Wnd:=Form1.Handle
试试
takdick 2002-10-18
  • 打赏
  • 举报
回复
private
{ Private declarations }
procedure IconMessage(var MsgIcon:TMessage);
message wm_icon;//加這句了嗎?

1,183

社区成员

发帖
与我相关
我的任务
社区描述
Delphi Windows SDK/API
社区管理员
  • Windows SDK/API社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧