空心雨毕业论文网提供毕业论文、职称论文、硕士论文、计算机论文等的代写服务,同时还提供各种期刊论文的发表。如果你有需要,请联系我们QQ:5599630;电话:13350726595;E-mail:singlehearted@vip.qq.com
RSS
 

系统托盘的编程

来源:网络转载 作者:

托盘消息处理:
在Shell32.DLL动态链接库中包括一个函数Shell_NotifyIconA()可通知Windows在任务条右下角加入一个小图标,可惜该函数的详细说明未收入Delphi的帮助文档中。现将实现例程示范如下:
unit pro2;
interface

uses
。。。, Menus,shellAPI; //TNotifyIconData是定义在shellAPI单元的

{自定义消息,当小图标捕捉到鼠标事件时Windows向回调函数发送此消息}
const WM_MYTRAYICONCALLBACK = WM_USER 1000 ;
。。。。

private
MyTrayIcon : TNotifyIconData ;
procedure WMMyTrayIconCallBack(Var Msg : TMessage); message WM_MYTRAYICONCALLBACK ;
//托盘消息处理过程
procedure WMCommand(Var msg : TWMCommand); message WM_Command;
//处理托盘图标的右键菜单事件
procedure Minimize(var mess:TWMNCLBUTTONDOWN); message WM_NCLBUTTONDOWN;
//窗体最小化时的消息处理
。。。。。。。。

procedure TForm1.FormCreate(Sender: TObject);
begin
//将程序窗口样式设为TOOL窗口,避免在任务栏上出现
SetWindowLong(Application.Handle,GWL_EXSTYLE,WS_EX_TOOLWINDOW);
end;

procedure TForm1.FormShow(Sender: TObject);
begin
//设置托盘
Icon.Handle := LoadIcon(Hinstance,'MAINICON');
MyTrayIcon.cbSize := SizeOf(TNotifyIconData);// nid变量的字节数
MyTrayIcon.Wnd := Handle ;// 主窗口句柄
MyTrayIcon.uID := 1 ;// 内部标识,可设为任意数
MyTrayIcon.uFlags := NIF_ICON or NIF_TIP or NIF_MESSAGE ;// 指明哪些字段有效
MyTrayIcon.uCallBackMessage := WM_MYTRAYICONCALLBACK ;//回调函数消息,将自定义托盘消息传递进去
MyTrayIcon.hIcon := Application.Icon.Handle; // 要加入的图标句柄,可任意指定
StrCopy(MyTrayIcon.szTip, PChar(Caption));
Shell_NotifyIcon(NIM_ADD,@MyTrayIcon);
ShowWindow(Handle,sw_Hide);
// Visible := False ;//当程序启动时就最小化在托盘区即Form.Create时启用此语句
Application.ShowMainForm := False ;
SetForegroundWindow(Application.Handle);
end;

////消息过程实现
procedure TForm1.WMMyTrayIconCallBack(var Msg: TMessage);
var CursorPos : TPoint;
begin
case Msg.LParam of
WM_LBUTTONDBLCLK : //双击消息:弹出主窗口
begin
Visible := not Visible ;
Application.ShowMainForm := Visible ;
SetForegroundWindow(Application.Handle);
end ;
WM_RBUTTONDOWN : //鼠标右键:弹出菜单


begin
GetCursorPos(CursorPos);
{ Popupmenu1.Popup(CursorPos.X,CursorPos.Y);
popupmen1里面就可以加入显示主窗口、退出等功能。这个右键菜单可以是静态的,如上面一句来弹出;也可以动态建立,如下面所示的方法:}
pm := createpopupmenu;//建立一个Hmenu,pm:hmenu;
AppendMenu(pm,0,ord('A'),'关于....');//在指定的菜单里添加一个菜单项
AppendMenu(pm,0,Ord('B'),'&Exit');
//加入菜单事件---》处理WMCOMMAND消息即可
TrackPopupMenu(pm,Tpm_BottomAlign or Tpm_RightAlign, CursorPos.x, CursorPos.y, 0,handle,nil);
//在图标上方显示该弹出式菜单
end ;
end ;
end;

procedure TForm1.WMCommand(var msg : TWMCommand);
begin
Case msg.ItemID of
Ord('A') : showmessage('我的右键菜单!');
Ord('B') : Self.close;//关闭程序主窗体
else inherited;
end;
end;

procedure Tform1.Minimize(var mess:TWMNCLBUTTONDOWN);//应用程序最小化消息处理
begin
if Mess.Hittest = htReduce then
Self.Hide
else inherited;
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
阅读更多内容1 · 2 · 下一页>>
5
最新评论
发表评论
评论内容:不能超过250字,需审核,请自觉遵守互联网相关政策法规。
      本站是由一个众多学科的博士群体组建而成,主要创办者为成都各重点高校博士。本论文网内理工科写手均为博士,文科类写手大部分为博士,且领域涵盖广泛,写作势力强大,若有部分专业,没有相关的写手,我们给你寻找合适的写手! 依托强大的人力资源,我们本着诚心交流的宗旨,专门为您排解写作上的难题。从在科研及实践工作中稳扎稳打的经历,我们具备了研究问题,解决问题的能力。论文写作和论文发表,作为教育体系的一个重要环节,我们确实有能力给您解决好问题,正所谓,真金不怕火来炼,请相信我们的势力,没有把握的事,我们不会做!
      本站受多家期刊委托,其中包括国家级中文核心期刊目录正刊,CSSCI目录正刊,增刊,省级以上公开出版的优秀期刊正刊,本站负责论文推荐发表,加急1个月即可发表。本站负责论文发表,不发表承诺退款!!目前主要负责法律,管理,经济,理工,农学,行政,医学,艺术,英语等类论文发表论文代写。详细期刊目录见本站相关内容。
赞助商链接