//... notifyIconData.uID用于管理图标(日后修改或删除图标就靠他了,通常使用图标句柄对应的ID即可) nid.uFlags=NIF_ICON|NIF_MESSAGE|NIF_TIP ; nid.uCallbackMessage=UM_SHOWTASK; //自定义的消息名称,对托盘图标进行鼠标操作就会发送此消息。 nid.hIcon=LoadIcon(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDR_MAINFRAME)); //... notifyIconData.hIcon图标资源句柄,描述图标如何被绘制 strcpy(nid.szTip,"事例托盘图标"); //信息提示条为“事例托盘图标” Shell_NotifyIcon(NIM_ADD,&nid); //在托盘区添加图标 LRESULT CXXXDlg::OnShowTask(WPARAM wParam,LPARAM lParam) //wParam接收的是图标的ID,而lParam接收的是鼠标的行为 { if(wParam!=IDR_MAINFRAME) return 1; switch(lParam) { case WM_RBUTTONUP://右键起来时弹出快捷菜单 { NOTIFYICONDATA nid; nid.cbSize=(DWORD)sizeof(NOTIFYICONDATA); nid.hWnd=this->m_hWnd; nid.uID=IDR_MAINFRAME; CMenu pMenu; pMenu.LoadMenu(IDR_MENU1); //加载菜单 CMenu* pPopup = pMenu.GetSubMenu(0); ::SetMenuDefaultItem(pPopup->m_hMenu,0,TRUE); CPoint mouse; GetCursorPos(&mouse); ::SetForegroundWindow(nid.hWnd); ::TrackPopupMenu(pPopup->m_hMenu,0,mouse.x,mouse.y,0,nid.hWnd,NULL); break; |