隐藏托盘图标:托盘图标及菜单的处理来源: 发布时间:星期四, 2009年2月12日 浏览:140次 评论:0
1、窗口关闭时消息顺序是: OnClose OnCancel OnDestroy 2、重载OnClose当用户按X或在系统菜单中“关闭”或Alt_F4时将窗口隐藏 voidCsiphelloDlg::OnClose ...{ //TODO:Addyourmessagehandlercodehereand/orcalldefault ShowWindow(SW_HIDE); } 3、将Esc按键过滤以防用户按Esc键后退出 BOOLCsiphelloDlg::PreTranslateMessage(MSG*pMsg) ...{ //TODO:Addyourspecializedcodehereand/orcallthebase //过滤Esc按键 (((pMsg->messageWM_KEYDOWN)||(pMsg->messageWM_KEYUP))&&(pMsg->wParamVK_ESCAPE)) ...{ TRUE; } CDialog::PreTranslateMessage(pMsg); } 4、写个以显示和删除托盘中图标 voidCsiphelloDlg::ShowTray(BOOLbShow) ...{ NOTIFYICONDATAnid; nid.cbSize=(DWORD)(NOTIFYICONDATA); nid.hWnd=this->m_hWnd; nid.uID=IDR_MAINFRAME; nid.uFlags=NIF_ICON|NIF_MESSAGE|NIF_TIP; nid.uCallbackMessage=WM_SHOWTRAY;//自定义消息 //nid.hIcon=LoadIcon(AfxGetInstanceHandle,MAKEINTRESOURCE(IDR_MAINFRAME)); nid.hIcon=m_hIcon; wcscpy_s(nid.szTip,_T(\"hellosip\")); (bShow) Shell_NotyIcon(NIM_ADD,&nid); Shell_NotyIcon(NIM_DELETE,&nid); [Page] } 5、在OnShowWindow中ShowTray(TRUE)在托盘中增加图标在OnDestroy中ShowTray(FALSE)将图标删除 6、处理图标上消息WM_SHOWTRAY(自定义消息) BEGIN_MESSAGE_MAP(CsiphelloDlg,CDialog) //其它... ON_WM_SHOWWINDOW ON_MESSAGE(WM_SHOWTRAY,OnTrayClicked)//这是处定义消息处理 ON_WM_CLOSE ON_WM_DESTROY END_MESSAGE_MAP LRESULTCsiphelloDlg::OnTrayClicked(WPARAMwParam,LPARAMlParam) ...{ //wParam是图标ID (wParam!=IDR_MAINFRAME) 1; switch(lParam) ...{ WM_RBUTTONUP: ...{ LPPOINTlpo=tagPOINT; ::GetCursorPos(lpo);//得到鼠标位置 CMenumenu;//弹出式菜单 menu.CreatePopupMenu; menu.AppendMenu(MF_STRING,WM_DESTROY,_T(\"退出\")); menu.TrackPopupMenu(TPM_LEFTALIGN,lpo->x,lpo->y,this); //资源回收 HMENUhmenu=menu.Detach; menu.DestroyMenu; deletelpo; } ; WM_LBUTTONDBLCLK: ...{ [Page] ShowWindow(SW_SHOW); } ; } 0; } 0
相关文章读者评论发表评论 |