给托盘添加右击菜单--变化的背景图
来源:互联网 发布:分期购物商城网站源码 编辑:程序博客网 时间:2024/05/29 14:36
南京航空航天大学张庆利
下载本文示例工程
图1 变化的背景图
给托盘添加右击菜单
一般的商业程序都有托盘图标和在托盘上弹出右击菜单的功能,那么如何给自已的程序添加这样的功能呢?本文通过改变背景图的实例,介绍一种实现托盘上弹出右击菜单的方法。
一、添加托盘图标给程序添加托盘图标的方法在很多VC书中都有实例,通常在程序中按下面的步骤就可以实现:
1、在XXDlg.CPP文件头部加入
#define WM_NOTIFYICONWM_USER+5 NOTIFYICONDATA nd;
2、在程序的初始化中加入下面代码
nd.cbSize= sizeof (NOTIFYICONDATA); nd.hWnd= m_hWnd; nd.uID= IDR_MAINFRAME; nd.uFlags= NIF_ICON|NIF_MESSAGE|NIF_TIP; nd.uCallbackMessage= WM_NOTIFYICON; nd.hIcon= m_hIcon; strcpy(nd.szTip, "我的托盘"); Shell_NotifyIcon(NIM_ADD, &nd);3、在程序的退了函数中加入删除托盘图标语句
Shell_NotifyIcon(NIM_DELETE, &nd);二、在资源中添加菜单
1、建立菜单
图2 菜单
2、建立菜单对应的函数
void CbackdropDlg::OnShow() { ShowWindow( SW_SHOWNORMAL);//恢复正常显示 } void CbackdropDlg::OnExit() { ::PostQuitMessage(0); //退出 } void CbackdropDlg::OnHide() { ShowWindow(SW_HIDE);//隐藏 } void CbackdropDlg::OnMin() { ShowWindow(SW_SHOWMINIMIZED);//最小化 }三、添加响应函数
1、在类中加入托盘消息响应函数
LONG CbackdropDlg::OnNotifyIcon(WPARAM wParam, LPARAM lParam)2、手中添加消息映射
//}}AFX_MSG_MAP ON_MESSAGE(WM_NOTIFYICON, OnNotifyIcon)//手工添加消息映射 END_MESSAGE_MAP()3、在托盘消息响应函数中添加代码
LONG CbackdropDlg::OnNotifyIcon(WPARAM wParam, LPARAM lParam) { // 响应在托盘图标上的单击 //wParam中是响应消息的图标ID,lParam中则是Windows的消息 // The backdrop icon sent us a message. Let''s see what it is switch ( lParam ) { case WM_RBUTTONDOWN: { // 用户在托盘图标上单击鼠标右键,弹出菜单 CMenu pMenu; if (pMenu.LoadMenu(IDR_MENU1)) { CMenu* pPopup = pMenu.GetSubMenu(0); ASSERT(pPopup != NULL); CPoint Point; if(IsIconic()) pPopup->EnableMenuItem(IDC_MIN,MF_BYCOMMAND | MF_DISABLED | MF_GRAYED); if (IsWindowVisible())// 根据对话框窗口的状态对相关菜单项使能 { if(!IsIconic()) pPopup->EnableMenuItem(IDC_SHOW,MF_BYCOMMAND | MF_DISABLED | MF_GRAYED); } else pPopup->EnableMenuItem(IDC_HIDE,MF_BYCOMMAND | MF_DISABLED | MF_GRAYED); if (bkbmp)// 根据对话框背景图状态改变菜单名称 pMenu.ModifyMenu(IDC_FIX,MF_STRING,IDC_FIX,"变化背景"); else pMenu.ModifyMenu(IDC_FIX,MF_STRING,IDC_FIX,"固定背景)"); // 确定鼠标位置以便在该位置附近显示菜单 GetCursorPos( &Point ); SetForegroundWindow(); pPopup->TrackPopupMenu( TPM_LEFTALIGN | TPM_RIGHTBUTTON, Point.x, Point.y, this);? } } break; case WM_LBUTTONDBLCLK: case WM_LBUTTONDOWN: // OnShow(); break; } return 0; }结束语
自本人有幸找到VCKBASE以来的大半年里得到了论坛中的众多高手指点,收益匪浅,所以想为VCKBASE论坛做点什么,因本人水平较低,故只能将在VCKBASE论坛中现学会的关于托盘右击菜单的方法结合变化背景图实例向大家汇报一下。要进一步了解背景图的内容请参考背景图实例中代码,如想了解更多的托盘资料请参考本站有关文章和实例。由于时间、水平限制,缺点和不足之处在所难免,敬请各位高手多多批评指正.。在此再一次对本论坛和在论坛中对我提供帮助的众多高手深深表示感谢!
- 给托盘添加右击菜单--变化的背景图
- 给托盘添加右击菜单--变化的背景图
- MFC 最小化到托盘及右击托盘菜单
- Qt 右击菜单的添加
- 给UITableViewCell添加选择后的背景图
- 给窗口添加背景图的案例
- 给view添加背景图
- QT 添加托盘菜单
- MFC添加托盘菜单
- 在openlaszlo的组件上添加自定义右击菜单
- Ext grid添加右击菜单
- PB 添加右击菜单1
- ATL 工程下添加右击菜单
- MFC几种给对话框添加背景图的方法
- MFC几种给对话框添加背景图的方法
- MFC几种给对话框添加背景图的方法
- MFC几种给对话框添加背景图的方法
- WPF程序添加托盘图标,菜单的方法
- 使用CreateProcess和wcscat_s容易出错的地方
- MYSQL连接字符串参数解析(解释)
- 用Visual C++语言在局域网实现IP多播
- 设计模式C++学习笔记之十七(Chain of Responsibility责任链模式)
- 根据wait_class查询后台的会话包含SQL_TEXT信息;
- 给托盘添加右击菜单--变化的背景图
- 设计模式C++学习笔记之十八(Visitor访问者模式)
- Yaffs的读写
- 设计模式C++学习笔记之十九(State状态模式)
- 如何实现前端优化提高网站访问速度
- VC窗体上的关闭按钮失效
- GCC编译选项及其优化
- file_get_contents被屏蔽解决方法
- VC++之对话框中添加工具栏