MFC程序最小化到系统托盘
2010-03-13 20:39
337 查看
1.声明一个NOTIFYICONDATA类:
.codearea{ color:black; background-color:white; line-height:18px; border:1px solid #4f81bd; margin:0; width:auto !important; width:100%; overflow:auto; text-align:left; font-size:12px; font-family: "Courier New","Consolas","Fixedsys","BitStream Vera Sans Mono", courier,monospace,serif}
.codearea pre{ color:black; line-height:18px; padding:0 0 0 12px !important; margin:0em; background-color:#fff !important}
.linewrap pre{white-space:pre-wrap; white-space:-moz-pre-wrap; white-space:-pre-wrap; white-space:-o-pre-wrap; word-wrap:break-word; word-break:normal}
.codearea pre.alt{ background-color:#f7f7ff !important}
.codearea .lnum{color:#4f81bd;line-height:18px}
2.声明一个函数,用于响应鼠标操作:
afx_msg LRESULT OnNotifyIcon(WPARAM wParam,LPARAM IParam);
该函数定义代码:
.codearea{ color:black; background-color:white; line-height:18px; border:1px solid #4f81bd; margin:0; width:auto !important; width:100%; overflow:auto; text-align:left; font-size:12px; font-family: "Courier New","Consolas","Fixedsys","BitStream Vera Sans Mono", courier,monospace,serif}
.codearea pre{ color:black; line-height:18px; padding:0 0 0 12px !important; margin:0em; background-color:#fff !important}
.linewrap pre{white-space:pre-wrap; white-space:-moz-pre-wrap; white-space:-pre-wrap; white-space:-o-pre-wrap; word-wrap:break-word; word-break:normal}
.codearea pre.alt{ background-color:#f7f7ff !important}
.codearea .lnum{color:#4f81bd;line-height:18px}
记得要定义一个菜单资源IDR_MENU1!
3.定义消息名称和消息号:
#define WM_NOTIFYICON (WM_USER+1001)
注册,在BEGIN_MESSAGE_MAP(Dlg,CDialog)和END_MESSAGE_MAP()之间添加:
ON_MESSAGE(WM_NOTIFYICON,OnNotifyIcon)
4.在要将MFC程序最小化到系统托盘的函数中添加以下代码:
.codearea{ color:black; background-color:white; line-height:18px; border:1px solid #4f81bd; margin:0; width:auto !important; width:100%; overflow:auto; text-align:left; font-size:12px; font-family: "Courier New","Consolas","Fixedsys","BitStream Vera Sans Mono", courier,monospace,serif}
.codearea pre{ color:black; line-height:18px; padding:0 0 0 12px !important; margin:0em; background-color:#fff !important}
.linewrap pre{white-space:pre-wrap; white-space:-moz-pre-wrap; white-space:-pre-wrap; white-space:-o-pre-wrap; word-wrap:break-word; word-break:normal}
.codearea pre.alt{ background-color:#f7f7ff !important}
.codearea .lnum{color:#4f81bd;line-height:18px}
.codearea{ color:black; background-color:white; line-height:18px; border:1px solid #4f81bd; margin:0; width:auto !important; width:100%; overflow:auto; text-align:left; font-size:12px; font-family: "Courier New","Consolas","Fixedsys","BitStream Vera Sans Mono", courier,monospace,serif}
.codearea pre{ color:black; line-height:18px; padding:0 0 0 12px !important; margin:0em; background-color:#fff !important}
.linewrap pre{white-space:pre-wrap; white-space:-moz-pre-wrap; white-space:-pre-wrap; white-space:-o-pre-wrap; word-wrap:break-word; word-break:normal}
.codearea pre.alt{ background-color:#f7f7ff !important}
.codearea .lnum{color:#4f81bd;line-height:18px}
NOTIFYICONDATA NotifyIcon;
2.声明一个函数,用于响应鼠标操作:
afx_msg LRESULT OnNotifyIcon(WPARAM wParam,LPARAM IParam);
该函数定义代码:
LRESULT CtestDlg::OnNotifyIcon(WPARAM wParam,LPARAM IParam)
{ //如果鼠标左键托盘单击图标,则显示MFC程序
if (IParam == WM_LBUTTONDOWN)
{
ModifyStyleEx(0,WS_EX_TOPMOST);
ShowWindow(SW_SHOW); //显示MFC程序
Shell_NotifyIcon(NIM_DELETE, &NotifyIcon); //删除系统托盘图标
}else if(IParam == WM_RBUTTONDOWN) //鼠标右键单击托盘图标,则显示一个菜单
{
CMenu menu;
menu.LoadMenu (IDR_MENU1); //加载菜单资源
CMenu* pContextMenu = menu.GetSubMenu (0); //取得指向menu菜单索引为0的子菜单的指针
POINT point;
GetCursorPos(&point); //取得鼠标坐标
//显示菜单
pContextMenu->TrackPopupMenu (TPM_LEFTALIGN | TPM_LEFTBUTTON |
TPM_RIGHTBUTTON, point.x, point.y, AfxGetMainWnd ());
}
return LRESULT(0);
}
.codearea{ color:black; background-color:white; line-height:18px; border:1px solid #4f81bd; margin:0; width:auto !important; width:100%; overflow:auto; text-align:left; font-size:12px; font-family: "Courier New","Consolas","Fixedsys","BitStream Vera Sans Mono", courier,monospace,serif}
.codearea pre{ color:black; line-height:18px; padding:0 0 0 12px !important; margin:0em; background-color:#fff !important}
.linewrap pre{white-space:pre-wrap; white-space:-moz-pre-wrap; white-space:-pre-wrap; white-space:-o-pre-wrap; word-wrap:break-word; word-break:normal}
.codearea pre.alt{ background-color:#f7f7ff !important}
.codearea .lnum{color:#4f81bd;line-height:18px}
记得要定义一个菜单资源IDR_MENU1!
3.定义消息名称和消息号:
#define WM_NOTIFYICON (WM_USER+1001)
注册,在BEGIN_MESSAGE_MAP(Dlg,CDialog)和END_MESSAGE_MAP()之间添加:
ON_MESSAGE(WM_NOTIFYICON,OnNotifyIcon)
4.在要将MFC程序最小化到系统托盘的函数中添加以下代码:
NotifyIcon.cbSize=sizeof(NOTIFYICONDATA);
NotifyIcon.hIcon=AfxGetApp()->LoadIcon(IDR_ICON1); //加载图标,IDR_ICON1是图标资源的ID
NotifyIcon.hWnd=m_hWnd;
lstrcpy(NotifyIcon.szTip,_T("Test"));
NotifyIcon.uCallbackMessage=WM_NOTIFYICON;
NotifyIcon.uFlags=NIF_ICON | NIF_MESSAGE | NIF_TIP;
Shell_NotifyIcon(NIM_ADD,&NotifyIcon); //显示托盘图标
//隐藏MFC程序窗体
ShowWindow(SW_HIDE);
.codearea{ color:black; background-color:white; line-height:18px; border:1px solid #4f81bd; margin:0; width:auto !important; width:100%; overflow:auto; text-align:left; font-size:12px; font-family: "Courier New","Consolas","Fixedsys","BitStream Vera Sans Mono", courier,monospace,serif}
.codearea pre{ color:black; line-height:18px; padding:0 0 0 12px !important; margin:0em; background-color:#fff !important}
.linewrap pre{white-space:pre-wrap; white-space:-moz-pre-wrap; white-space:-pre-wrap; white-space:-o-pre-wrap; word-wrap:break-word; word-break:normal}
.codearea pre.alt{ background-color:#f7f7ff !important}
.codearea .lnum{color:#4f81bd;line-height:18px}
相关文章推荐
- MFC程序最小化到系统托盘
- MFC程序最小化到系统托盘
- VC++MFC对话框应用程序实现程序最小化到系统托盘
- 转载:MFC程序最小化到系统托盘
- MFC程序最小化到系统托盘
- MFC程序最小化到系统托盘
- MFC基于Dialog的窗口程序启动时最小化到托盘
- MFC程序最小化到托盘
- 如何使程序最小化时出现在系统托盘中(C#)
- AIR程序如何最小化到系统托盘(2)
- 【转载、修改、增强】MFC基于对话框程序如何最小化到托盘?
- MFC基于Dialog的窗口程序启动时最小化到托盘
- winform编程实现程序最小化到系统托盘代码 (转)
- MFC最小化程序到托盘
- 【转】winform编程实现程序最小化到系统托盘代码
- MFC中提示对话框的滑动弹出和程序图标加入系统托盘的实现
- MFC 为程序制作一个系统托盘图标、显示隐藏任务栏图标
- C#winform中怎么将程序最小化到系统托盘
- C#winform中怎么将程序最小化到系统托盘
- AIR程序如何最小化到系统托盘(3)