最小化程序到托盘,并且有右键菜单!
来源:互联网 发布:删除Mac本上的图片 编辑:程序博客网 时间:2024/05/17 08:27
1.定义全局变量和消息
NOTIFYICONDATA nid;
#define WM_ICONNOTIFY WM_USER + 909 //图标响应消息(lParam)
#define ID_TASKBARICON 100 //参数(wParam)
/**//////////////////////////////////////////////////////////////////////////////
#define WM_ICONNOTIFY WM_USER + 909 //图标响应消息(lParam)
#define ID_TASKBARICON 100 //参数(wParam)
/**//////////////////////////////////////////////////////////////////////////////
2。编写onsize事件函数
void CMainFrame::OnSize(UINT nType, int cx, int cy)
...{
CFrameWnd::OnSize(nType, cx, cy);
// TODO: Add your message handler code here
if ( nType == SIZE_MINIMIZED)
...{
//初始化系统托盘图标
nid.cbSize = sizeof(NOTIFYICONDATA);
nid.hWnd = m_hWnd;;
nid.uID = ID_TASKBARICON; //发出的消息中的wParam参数
nid.uFlags = NIF_ICON|NIF_MESSAGE|NIF_TIP;
nid.uCallbackMessage = WM_ICONNOTIFY; //点击托盘图标系统发出的消息(即发出的消息中的lParam参数)
nid.hIcon = LoadIcon(AfxGetInstanceHandle(), MAKEINTRESOURCE(IDR_MAINFRAME));
strcpy(nid.szTip, "聊天");
Shell_NotifyIcon(NIM_ADD, &nid); //加入图标
ShowWindow(SW_HIDE); //隐藏窗体
}
}
...{
CFrameWnd::OnSize(nType, cx, cy);
// TODO: Add your message handler code here
if ( nType == SIZE_MINIMIZED)
...{
//初始化系统托盘图标
nid.cbSize = sizeof(NOTIFYICONDATA);
nid.hWnd = m_hWnd;;
nid.uID = ID_TASKBARICON; //发出的消息中的wParam参数
nid.uFlags = NIF_ICON|NIF_MESSAGE|NIF_TIP;
nid.uCallbackMessage = WM_ICONNOTIFY; //点击托盘图标系统发出的消息(即发出的消息中的lParam参数)
nid.hIcon = LoadIcon(AfxGetInstanceHandle(), MAKEINTRESOURCE(IDR_MAINFRAME));
strcpy(nid.szTip, "聊天");
Shell_NotifyIcon(NIM_ADD, &nid); //加入图标
ShowWindow(SW_HIDE); //隐藏窗体
}
}
附加:如果要改变程序的风格可以添加下面代码
void CYOUclass::OnShowWindow(BOOL bShow, UINT nStatus)
{
CPropertySheet::OnShowWindow(bShow, nStatus);
this->ModifyStyle(WS_POPUP ,/*WS_MAXIMIZEBOX|*/WS_MINIMIZEBOX/*|WS_OVERLAPPEDWINDOW*/);
this->ModifyStyleEx(WS_EX_DLGMODALFRAME,WS_EX_OVERLAPPEDWINDOW );
// TODO: 在此处添加消息处理程序代码
}
3。编写自定义的消息
LRESULT CMainFrame::onNotifyIcon(WPARAM wparam , LPARAM lparam)
...{
POINT rpoint;
CMenu tmenu;
GetCursorPos(&rpoint);
//如果在托盘图标上双击左键
if ( ( wparam == ID_TASKBARICON ) && ( lparam == WM_LBUTTONDBLCLK ) )
...{
ShowWindow(SW_SHOW); //显示窗体
ShowWindow(SW_SHOWNORMAL);
Shell_NotifyIcon(NIM_DELETE, &nid); //删除系统托盘图标
}
//如果在托盘图标上双击右键
if ( ( wparam == ID_TASKBARICON ) && ( lparam == WM_RBUTTONDOWN ) )
...{
tmenu.LoadMenu(IDR_MAINFRAME); //加载系统主菜单
SetForegroundWindow(); //将程序置于桌面顶部
tmenu.GetSubMenu(0)->TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON,rpoint.x, rpoint.y, this); //在点击图标处弹出系统菜单的第一项
}
return 0;
}
...{
POINT rpoint;
CMenu tmenu;
GetCursorPos(&rpoint);
//如果在托盘图标上双击左键
if ( ( wparam == ID_TASKBARICON ) && ( lparam == WM_LBUTTONDBLCLK ) )
...{
ShowWindow(SW_SHOW); //显示窗体
ShowWindow(SW_SHOWNORMAL);
Shell_NotifyIcon(NIM_DELETE, &nid); //删除系统托盘图标
}
//如果在托盘图标上双击右键
if ( ( wparam == ID_TASKBARICON ) && ( lparam == WM_RBUTTONDOWN ) )
...{
tmenu.LoadMenu(IDR_MAINFRAME); //加载系统主菜单
SetForegroundWindow(); //将程序置于桌面顶部
tmenu.GetSubMenu(0)->TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON,rpoint.x, rpoint.y, this); //在点击图标处弹出系统菜单的第一项
}
return 0;
}
- 最小化程序到托盘,并且有右键菜单!
- WinForm最小化到托盘以及托盘右键菜单
- Delphi 最小化程序到任务栏托盘 增加右键PopMenu
- 程序最小化到托盘
- 程序最小化到托盘
- WinForm最小化到托盘以及托盘右键菜单(转),略修改
- 让一个程序托盘显示,并且右键托盘图标可以弹出菜单
- MFC基于对话框最小化到托盘,并鼠标右键添加菜单以及对应菜单功能
- VC最小化程序到托盘
- VC最小化程序到托盘
- VC程序最小化到托盘
- VC最小化程序到托盘
- VC最小化到托盘程序
- MFC程序最小化到托盘
- MFC最小化程序到托盘
- MFC最小化程序到托盘
- MFC程序最小化到托盘
- VC程序最小化到托盘
- SharePoint部署
- adovbs.inc
- Silverlight 1.1正式更名为Silverlight 2.0
- 取到服务器时间的JS脚本给客户端显示时间
- Windows Mobile 打包过程
- 最小化程序到托盘,并且有右键菜单!
- TCP/IP学习笔记之六 --- ICMP: Internet控制报文协议
- 拖动层效果
- Aruba推出新一代超高性能多业务移动控制器和802.11n接入点
- Linux环境下的Socket编程
- virtual pc 2007(vpc2007) 使用中无法显示控制主界面的解决方法
- Oracle的RBO和CBO优化
- php 常用学习站点
- Window Mobile 打包过程2