探索当前应用程序指示图标的实现方法
- 作者:admin 来源:网络 日期:2009-5-3 17:43:54
在窗体的创建程序中设置该结构的各个成员值:
nid.cbsize:=sizeof(nid);
nid.wnd:=Handle;//当前窗体的句柄
nid.uID:=1;
nid.uCallBackMessage:=wm_rbuttondown;
nid.hIcon:=LoadIcon(hInstance,'KQ');
nid.szTip:='HS考勤系统';
nid.uFlags:=nif_Messageornif_Iconornif_Tip;
其中函数LoadIcon()用于装载一个图标资源,参数hInstance为应用程序句柄,第二个参数串值用于指定图标文件名或是图标资源标识符.
再调用API函数Shell_NotifyIcon向任务栏指示区添加一个图标:
Shell_NotifyIcon(NIM_ADD,@nid);
并且设置应用程序的ShowMainForm属性为False使得应用程序窗体在启动时即不可见:
Application.ShowMainForm:=False;
为了使应用程序能够对用户在指示图标上的操作有所响应,需要在应用程序窗体中建立一个消息处理函数IconTray.首先是向窗体类的元素中添加一个该过程声明:
public
{Publicdeclarations}
procedureIconTray(varMsg:TMessage);
messagewm_rbuttondown;
其次就需要在该窗体的implementation部分定义该消息处理函数的具体实现过程:
procedureTForm1.IconTray(varMsg:TMessage);
varPt:TPoint;
I:Byte;
begin
caseMsg.LParamof//根据Lparam分量的值确定消息种类
wm_rbuttondown://若用户用鼠标右击指示图标,
//则弹出一个快捷菜单
begin
GetCursorPos(Pt);//获取光标位置
SetForegroundWindow(Handle);//将窗口放至顶层
PopupMenu1.Popup(Pt.x,Pt.y);//弹出快捷菜单
end;
wm_lbuttondblclk://若用户用鼠标左键双击指示图标,
//则弹出应用程序窗口
begin
ShowWindow(Handle,SW_Restore);//显示应用程序主窗口
SetForegroundWindow(Handle);//显示主窗口上所有控件
ForI:=0tocomponentcount-1do
ifComponents[I]isTWinControlthen
ShowWindow(TWinControl(Components[I])
.Handle,SW_Normal);
end;
end;
另外用户还可以在最小化应用程序窗口时将窗口隐藏,实现途径是先截获系统消息WM_SYSCOMMAND,该消息是当用户选择窗口系统菜单或控制菜单命令时发送到该窗口的.在相应的消息处理函数中可以通过函数的Msg参数的Wparam分量值来判断用户执行的是何种操作,若Wparam的值为SC_MINIMIZE则表明用户执行的是最小化操作,此时就可调用函数ShowWindow(Handle,SW_SHOWMINIMIZED),先将当前应用程序窗口最小化,然后再调用函数ShowWindow(Handle,SW_Hide)将该窗口隐藏,若Wparam的值为SC_CLOSE则表明用户执行的是关闭操作,此时只需通过inherited语句继承原有的类操作即可(此处源代码从略).转载于范文中国网http://www.fw789.com。
当然,应用程序指示图标并不是应用程序的主体部分,实际的应用程序实现起来还有很多工作,但是通过使用应用程序指示图标可以使应用程序增色不少.http://www.dxlww.net代写论文网
4.小结
通过应用程序指示图标的实现,有效地解决了如实时监控程序之类的一些应用程序本来所存在的可能影响正常运行的问题,改善了人机界面,方便了用户的操作,同时也提高了系统正常运行的稳定性、可靠性.通过该方法实现的IC卡考勤系统实际运行效果良好.
参考文献
[1]MarcoCautu著王辉谭海平等译Delphi3从入门到精通北京电子工业出版社1998
[2]MarcoCautuTimGooth著王辉张晓晖等译Delphi高级开发指南北京电子工业出版社1998
[3]孙凤英等译MFC开发Windows95/NT4应用程序北京清华大学出版社1998
代写论文联系方式
联系QQ:904272800

联系信箱:904272800@qq.com

代写论文导航
客户、写手申请单
最新论文
热点论文