三、用户与程序交互的实现
用户进行交互,也就是当用户在该图标上单击或双击鼠标左键或右键时要执行相应的操作,至少也要响应用户终止该程序的意愿。上面已经提到,当用户在图标上进行鼠标动作时,将向hWnd成员中指定的窗口发出自定义的消息,该消息为uCallbackMessage成员所指定的WM_MYESSAGE,取值为WM_USER+101(如何自定义消息,我就不多说了)。我们要实现任务就是在hWnd窗口中响应该自定义消息:
void CMainFrame::OnMYMESSAGE(WPARAM wParam,LPARAM lParam) { UINT uID;//发出该消息的图标的ID UINT uMouseMsg;//鼠标动作 POINT pt; uID=(UINT) wParam; uMouseMsg=(UINT) lParam; if(uMouseMsg==WM_RBUTTONDOWN)//如果是单击右键 { switch(uID) { case IDR_MAINFRAME://如果是我们的图标 GetCursorPos(&pt);//取得鼠标位置 AfxGetApp( )-> m_pMainWnd->ShowWindow(SW_SHOWNORMAL);//显示程序窗口 break; default: } } return; }
四、程序结束时删除程序图标
当程序结束时,需要删去通告区中的图标,这时还应该调用Shell_NotifyIcon函数,只不过第一个参数是表示删除图标的NIM_DELETE了:
void CMainFrame::~CmainFrame() { NOTIFYICONDATA tnid; tnid.cbSize=sizeof(NOTIFYICONDATA); tnid.hWnd=this->m_hWnd; tnid.uID=IDR_MAINFRAME;//保证删除的是我们的图标 Shell_NotifyIcon(NIM_DELETE,&tnid); }
上述实现步骤可以实现托盘程序,笔者在开发的IC卡程序中就应用了以上技术,希望可以对朋友们有所帮助。 
说明:本教程来源互联网或网友上传或出版商,仅为学习研究或媒体推广,wanshiok.com不保证资料的完整性。
2/2 首页 上一页 1 2 |