给托盘添加右击菜单--变化的背景图
2006-07-20 11:41:08 来源:WEB开发网核心提示: 1、在类中加入托盘消息响应函数LONG CbackdropDlg::OnNotifyIcon(WPARAM wParam, LPARAM lParam)2、手中添加消息映射//}}AFX_MSG_MAPON_MESSAGE(WM_NOTIFYICON, OnNotifyIcon)//手工添
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论坛中现学会的关于托盘右击菜单的方法结合变化背景图实例向大家汇报一下。要进一步了解背景图的内容请参考背景图实例中代码,如想了解更多的托盘资料请参考本站有关文章和实例。由于时间、水平限制,缺点和不足之处在所难免,敬请各位高手多多批评指正.。在此再一次对本论坛和在论坛中对我提供帮助的众多高手深深表示感谢!
更多精彩
赞助商链接