欢迎来到天天文库
浏览记录
ID:27254005
大小:30.60 KB
页数:12页
时间:2018-12-02
《从任务通知区启动屏幕保护程序》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、从任务通知区启动屏幕保护程序 1、任务栏通知区 Windows95的任务栏中有一个通知区,应用程序可以把一个图标放入其中,以表示操作状态,并可以有与之相关联的工具用作说明控制。当鼠标出现在此图标的矩形边界内时,向相应的应用程序发送应用程序定义的回调消息。应用程序通过发送消息增加、修改、删除任务栏图标。消息的发送通过调用函数Shell_NotifyIcon来完成,如果调用成功,则返回TRUE;否则,返回FALSE。Shell_NotifyIcon函数原形如下:WINSHELLAPIBOOLWINAPIShell_NotifyIco
2、n( DWORDdwMessage,//消息标识符 PNOTIFYICONDATApnid//NOTIFYICONDATA结构 ); 消息标识符可以是: NIM_ADD向任务栏通知区加入图标 NIM_DELETE从任务栏通知区删除图标 NIM_MODIFY改变任务栏通知区图标 NOTIFYICONDATA结构: typedefstruct_NOTIFYICONDATA{ DWORDcbSize; HWNDhWnd; UINTuID; UINTuFlags; UINTuCallbackMessage
3、; HICONhIcon; charszTip[64]; }NOTIFYICONDATA,*PNOTIFYICONDATA; 其中: cbSizeNOTIFYICONDATA结构大小 hWnd接收回调消息窗口句柄 uID任务栏通知区图标标识 uFlags指定该结构中那些成员有效 uCallbackMessage应用程序定义的回调消息 hIcon任务栏通知区图标句柄 szTip任务栏通知区提示字符串 参数uFlags可以是下列值的组合: NIF_ICON任务栏通知区图标有效 NIF_MESSAGE应
4、用程序定义的回调消息有效 NIF_TIP任务栏通知区提示字符串有效 a.任务栏通知区图标的加入 BOOLSSLaunch_OnInitDialog(HWNDhwnd,HWNDhwndFocus,LPARAMlParam) { //Addannotificationicontothetaskbar NOTIFYCONDATAnid; NOTIFYICONDATAnid; nid.cbSize=sizeof(nid); nid.hWnd=hwnd; nid.uID=IDI_SSLAUNCH; nid.uFlag
5、s=NIF_MESSAGE
6、NIF_ICON
7、NIF_TIP; nid.uCallbackMessage=WM_SSLAUNCHICONNOTIFY; nid.hIcon=LoadIcon(GetWindowInstance(hwnd), KEINTRESOURCE(IDI_SSLAUNCH)); lstrcpyn(nid.szTip,g_szAppName,sizeof(nid.szTip)/sizeof(nid.szTip[0])); return(Shell_NotifyIcon(NIM_ADD,&nid))
8、} b.任务栏通知区图标的删除 应用程序退出时,应该删除任务通知区上相应的图标: voidSSLaunch_OnDestroy(HWNDhwnd) { //Removethenotificationiconfromthetaskbar NOTIFYICONDATAnid; nid.cbSize=sizeof(nid); nid.hWnd=hwnd; nid.uID=IDI_SSLAUNCH; Shell_NotifyIcon(NIM_DELETE,&nid); } c.应用程序定义回调消息的接收 若
9、为任务栏通知区指定了回调消息,则系统会于鼠标事件在此区域发生时 向应用程序发送此消息,其中wParam是任务栏通知区图标标识,lParam 是鼠标事件发生后的鼠标信息。 voidSSLaunch_OnIconNotify(WPARAMwParam,LPARAMlParam) { UINTuID=(UINT)wParam; UINTuMsg=(UINT)lParam; if(uID==IDI_SSLAUNCH){ switch(uMsg){ caseWM_LBUTTONDOWN: //Dosomething
10、 break; caseWM_LBUTTONUP: //Dosomething break; default: break; } } } 2.禁止多个Win32实例 在讨论禁止多个Win32实例之前,
此文档下载收益归作者所有