C++对话框系统托盘实现
来源:互联网 发布:sftp端口登录命令 编辑:程序博客网 时间:2024/06/12 19:28
1、MFC对话框最小化时,只显示系统右下角托盘图标。
2、双击托盘,对话框还原。
3、右键点击托盘,弹出“关闭”菜单,可关闭对话框。
实现步骤:
1、创建MFC对话框程序(本例程序名为TaskbarIcon),属性中设置“MinimizeBox”为true。
2、定义自定义消息宏。
#define NOTIFY_SHOW WM_USER+1
3、OnSysCommand(系统消息响应函数)添加对话框最小化执行代码。
void CTaskbarIconDlg::OnSysCommand(UINT nID, LPARAM lParam)
{
if (SC_MINIMIZE == nID)
{
NOTIFYICONDATA nid;
nid.cbSize = (DWORD)sizeof(NOTIFYICONDATA);
nid.hWnd = this->m_hWnd;
nid.uID = IDR_MAINFRAME;
nid.uFlags = NIF_ICON|NIF_MESSAGE|NIF_TIP ;
nid.uCallbackMessage = NOTIFY_SHOW;//自定义的消息名称
nid.hIcon = LoadIcon(AfxGetInstanceHandle(), MAKEINTRESOURCE(IDR_MAINFRAME));
wcscpy_s(nid.szTip, _T("图标测试"));//信息提示条
Shell_NotifyIcon(NIM_ADD,&nid);//在托盘区添加图标
ShowWindow(SW_HIDE);//隐藏主窗口
return;
}
//...系统自带代码
}
4、托盘自定义消息响应
BEGIN_MESSAGE_MAP(CTaskbarIconDlg, CDialog)
//...省略其他消息映射
ON_MESSAGE(NOTIFY_SHOW, OnTrayIcon)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
afx_msg LRESULT OnTrayIcon(WPARAM wParam, LPARAM lParam);
LRESULT CTaskbarIconDlg::OnTrayIcon(WPARAM wParam, LPARAM lParam)
{
if (wParam != IDR_MAINFRAME)
{
return 1;
}
switch(lParam)
{
case WM_RBUTTONUP:
{
//右键起来时弹出快捷菜单,这里只有一个“关闭”
//声明一个弹出式菜单
//增加菜单项“关闭”,点击则发送消息WM_CLOSE给主窗口(已
//隐藏),将程序结束。
CMenu menu;
menu.CreatePopupMenu();
menu.AppendMenu(MF_STRING, ID_APP_EXIT, _T("关闭"));
//得到鼠标位置
LPPOINT lpoint= new tagPOINT;
::GetCursorPos(lpoint);
//确定弹出式菜单的位置
menu.TrackPopupMenu(TPM_LEFTALIGN, lpoint->x, lpoint->y,this);
//资源回收
HMENU hmenu=menu.Detach();
menu.DestroyMenu();
delete lpoint;
lpoint = NULL;
break;
}
case WM_LBUTTONDBLCLK:
{
//双击左键的处理
//显示界面
ShowWindow(SW_SHOW);
//界面置顶
SetForegroundWindow();
break;
}
}
return 0;
}
5、关闭时删除托盘图标。
覆盖(override)OnCancel函数或OnClose函数。
virtual void OnCancel();
void CTaskbarIconDlg::OnCancel()
{
//删除任务栏图标
NOTIFYICONDATA nid;
nid.hWnd=this->m_hWnd;
nid.uID=IDR_MAINFRAME;
Shell_NotifyIcon(NIM_DELETE, &nid);
CDialog::OnCancel();
}
- C++对话框系统托盘实现
- C++对话框系统托盘实现
- VC实现将对话框最小化到系统托盘
- 对话框系统托盘
- VC++MFC对话框应用程序实现程序最小化到系统托盘
- C#下实现动态系统托盘图标
- [C#]WinFrom中实现最小化至系统托盘
- C#下实现动态系统托盘图标
- C#下实现动态系统托盘图标
- [C#]WinFrom中实现最小化至系统托盘
- C#下实现动态系统托盘图标
- MFC 对话框最小到系统托盘
- C#实现WinForm程序的动态系统托盘图标
- C#实现WinForm程序的动态系统托盘图标
- MFC中提示对话框的滑动弹出和程序图标加入系统托盘的实现
- MFC中提示对话框的滑动弹出和程序图标加入系统托盘的实现
- 用SWT实现系统托盘
- java实现系统托盘图标
- 中兴/谷歌笔试准备
- 修改BHO的版本号公司名等
- hdu2111-Saving HDU
- FPGA各种时序问题的解决办法
- cookie 与session的 简单区别
- C++对话框系统托盘实现
- 对于dbgrideh如何动态隐藏或者显示列
- UVa 1312
- java垃圾回收那点事(三)不同gc策略的heap分配
- 字符串试题整理OK
- winform 获取 本地ip
- VS2012 编译 PHP C++ 扩展奇遇
- poj1698 Alice's Chance 最大流
- IE6兼容性,双倍距离margin