给托盘添加右击菜单--变化的背景图
来源:互联网 发布:淘宝店铺自助服务在哪 编辑:程序博客网 时间:2024/06/05 11:06
http://www.vckbase.com/index.php/wv/1167
图1 变化的背景图
给托盘添加右击菜单
一般的商业程序都有托盘图标和在托盘上弹出右击菜单的功能,那么如何给自已的程序添加这样的功能呢?本文通过改变背景图的实例,介绍一种实现托盘上弹出右击菜单的方法。
一、添加托盘图标
给程序添加托盘图标的方法在很多VC书中都有实例,通常在程序中按下面的步骤就可以实现:
1、在XXDlg.CPP文件头部加入
1.
#define WM_NOTIFYICONWM_USER+5
2.
NOTIFYICONDATA nd;
2、在程序的初始化中加入下面代码
1.
nd.cbSize=
sizeof
(NOTIFYICONDATA);
2.
nd.hWnd= m_hWnd;
3.
nd.uID= IDR_MAINFRAME;
4.
nd.uFlags= NIF_ICON|NIF_MESSAGE|NIF_TIP;
5.
nd.uCallbackMessage= WM_NOTIFYICON;
6.
nd.hIcon= m_hIcon;
7.
strcpy
(nd.szTip,
"我的托盘"
);
8.
Shell_NotifyIcon(NIM_ADD, &nd);
3、在程序的退了函数中加入删除托盘图标语句
1.
Shell_NotifyIcon(NIM_DELETE, &nd);
二、在资源中添加菜单
1、建立菜单
图2 菜单
2、建立菜单对应的函数
01.
void
CbackdropDlg::OnShow()
02.
{
03.
ShowWindow( SW_SHOWNORMAL);
//恢复正常显示
04.
}
05.
06.
void
CbackdropDlg::OnExit()
07.
{
08.
::PostQuitMessage(0);
//退出
09.
}
10.
void
CbackdropDlg::OnHide()
11.
{
12.
ShowWindow(SW_HIDE);
//隐藏
13.
}
14.
15.
void
CbackdropDlg::OnMin()
16.
{
17.
ShowWindow(SW_SHOWMINIMIZED);
//最小化
18.
}
三、添加响应函数
1、在类中加入托盘消息响应函数
1.
LONG
CbackdropDlg::OnNotifyIcon(
WPARAM
wParam,
LPARAM
lParam)
2、手中添加消息映射
1.
//}}AFX_MSG_MAP
2.
ON_MESSAGE(WM_NOTIFYICON, OnNotifyIcon)
//手工添加消息映射
3.
END_MESSAGE_MAP()
3、在托盘消息响应函数中添加代码
01.
LONG
CbackdropDlg::OnNotifyIcon(
WPARAM
wParam,
LPARAM
lParam)
02.
{
03.
// 响应在托盘图标上的单击
04.
//wParam中是响应消息的图标ID,lParam中则是Windows的消息
05.
// The backdrop icon sent us a message. Let''s see what it is
06.
switch
( lParam )
07.
{
08.
case
WM_RBUTTONDOWN:
09.
{
10.
// 用户在托盘图标上单击鼠标右键,弹出菜单
11.
CMenu pMenu;
12.
if
(pMenu.LoadMenu(IDR_MENU1))
13.
{
14.
CMenu* pPopup = pMenu.GetSubMenu(0);
15.
ASSERT(pPopup != NULL);
16.
CPoint Point;
17.
if
(IsIconic()) pPopup->EnableMenuItem(IDC_MIN,MF_BYCOMMAND |
18.
MF_DISABLED | MF_GRAYED);
19.
if
(IsWindowVisible())
// 根据对话框窗口的状态对相关菜单项使能
20.
{
21.
if
(!IsIconic())
22.
pPopup->EnableMenuItem(IDC_SHOW,MF_BYCOMMAND |
23.
MF_DISABLED | MF_GRAYED);
24.
}
25.
else
26.
pPopup->EnableMenuItem(IDC_HIDE,MF_BYCOMMAND |
27.
MF_DISABLED | MF_GRAYED);
28.
if
(bkbmp)
// 根据对话框背景图状态改变菜单名称
29.
pMenu.ModifyMenu(IDC_FIX,MF_STRING,IDC_FIX,
"变化背景"
);
30.
else
31.
pMenu.ModifyMenu(IDC_FIX,MF_STRING,IDC_FIX,
"固定背景)"
);
32.
// 确定鼠标位置以便在该位置附近显示菜单
33.
GetCursorPos( &Point );
34.
SetForegroundWindow();
35.
pPopup->TrackPopupMenu(
36.
TPM_LEFTALIGN | TPM_RIGHTBUTTON,
37.
Point.x, Point.y,
this
);?
38.
}
39.
}
40.
break
;
41.
case
WM_LBUTTONDBLCLK:
42.
case
WM_LBUTTONDOWN:
43.
// OnShow();
44.
break
;
45.
}
46.
return
0;
47.
}
结束语
自本人有幸找到VCKBASE以来的大半年里得到了论坛中的众多高手指点,收益匪浅,所以想为VCKBASE论坛做点什么,因本人水平较低,故只能将在VCKBASE论坛中现学会的关于托盘右击菜单的方法结合变化背景图实例向大家汇报一下。要进一步了解背景图的内容请参考背景图实例中代码,如想了解更多的托盘资料请参考本站有关文章和实例。由于时间、水平限制,缺点和不足之处在所难免,敬请各位高手多多批评指正.。在此再一次对本论坛和在论坛中对我提供帮助的众多高手深深表示感谢!
- 给托盘添加右击菜单--变化的背景图
- 给托盘添加右击菜单--变化的背景图
- MFC 最小化到托盘及右击托盘菜单
- Qt 右击菜单的添加
- 给UITableViewCell添加选择后的背景图
- 给窗口添加背景图的案例
- 给view添加背景图
- QT 添加托盘菜单
- MFC添加托盘菜单
- 在openlaszlo的组件上添加自定义右击菜单
- Ext grid添加右击菜单
- PB 添加右击菜单1
- ATL 工程下添加右击菜单
- MFC几种给对话框添加背景图的方法
- MFC几种给对话框添加背景图的方法
- MFC几种给对话框添加背景图的方法
- MFC几种给对话框添加背景图的方法
- WPF程序添加托盘图标,菜单的方法
- hdu 1115 Lifting the Stone 多边形的重心
- 为Git设置goagent代理
- maven使用
- atoi函数 int m_atoi(char* str)
- BASH SHELL快速入门
- 给托盘添加右击菜单--变化的背景图
- DoG算子和双边滤波处理图片产生漫画效果
- 牛人的博客
- 006回溯法——n皇后问题
- 初来乍到,这个网站对我太有用了!
- VS2010+Opencv-2.4.0的配置攻略
- ch01 Java动态网站开发概述
- Log4net .NET 平台下的应用
- ntop监控工具的安装