//*********************************************************** //函数名称 : ToTray //函数功能 : 最小化到系统托盘 //输入参数 : //输出参数 : //返回代码 : //*********************************************************** //本地注释 : //*********************************************************** void CBackupUIDlg::ToTray() { nid.cbSize = (DWORD)sizeof(NOTIFYICONDATA);// 结构的长度,用“位”来做单位。 nid.hWnd = this->m_hWnd;//消息传送的窗口句柄 nid.uID = IDR_MAINFRAME;//在工程中定义的图标ID nid.uFlags = NIF_ICON|NIF_MESSAGE|NIF_TIP; nid.uCallbackMessage = WM_SHOWTASK;//自定义的消息名称 nid.hIcon=LoadIcon(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDR_MAINFRAME)); _tcscpy_s(nid.szTip,sizeof(nid.szTip)+1,_T("备份客户端"));//信息提示条为“备份客户端” Shell_NotifyIcon(NIM_ADD,&nid);//在托盘区添加图标 ShowWindow(SW_HIDE);//隐藏主窗口 } //************************************************************** //函数名称 : onShowTask //函数功能 : 托盘事件回调函数 //输入参数 : //输出参数 : //返回代码 : //************************************************************** //本地注释 : //************************************************************** LRESULT CBackupUIDlg::onShowTask(WPARAM wParam,LPARAM lParam) { if(wParam!=IDR_MAINFRAME) return 1; switch(lParam) { case WM_RBUTTONUP://右键起来时弹出快捷菜单,这里只有一个“关闭” { LPPOINT lpoint=new tagPOINT; ::GetCursorPos(lpoint);//得到鼠标位置 CMenu menu; //载入事先定义的菜单 VERIFY(menu.LoadMenu(IDR_MENU_TRAY)); CMenu *pMenu = (CMenu *)(menu.GetSubMenu(0)); ASSERT(pMenu != NULL); //确定弹出式菜单的位置 pMenu->TrackPopupMenu(TPM_LEFTALIGN,lpoint->x,lpoint->y,this); //资源回收 HMENU hmenu=menu.Detach(); menu.DestroyMenu(); delete lpoint; } break; case WM_LBUTTONDBLCLK://双击左键的处理 { this->ShowWindow(SW_SHOW);//简单的显示主窗口完事儿 } break; } return 0; } /*********************************************/ /* 最小化到托盘后点击右键退出 */ /*********************************************/ void CBackupUIDlg::OnExit() { ::PostQuitMessage(0); } http://www.2012bb.com ××× http://www.pic6.info 人体艺术网 |
转载于:https://blog.51cto.com/2563075/454857