专注于互联网--专注于架构

最新标签
网站地图
文章索引
Rss订阅

首页 »DotNet » 隐藏托盘图标:托盘图标及菜单的处理 »正文

隐藏托盘图标:托盘图标及菜单的处理

来源: 发布时间:星期四, 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

相关文章

读者评论

发表评论

  • 昵称:
  • 内容: