托盘图标及右键菜单

1.定义成员变量
NOTIFYICONDATA NotifyIcon;//托盘图标


2.初始化创建托盘图标
NotifyIcon.cbSize = sizeof(NOTIFYICONDATA);
NotifyIcon.hIcon = this->m_hIcon;
NotifyIcon.hWnd = this->m_hWnd;
lstrcpy(NotifyIcon.szTip, L"TEST"); //鼠标放上去显示文字
NotifyIcon.uCallbackMessage = WM_NOTIFYICON;//自定义托盘图标消息
NotifyIcon.uFlags = NIF_ICON | NIF_MESSAGE | NIF_TIP;
Shell_NotifyIcon(NIM_ADD, &NotifyIcon);


3.自定义消息、消息响应函数,添加消息映射
#ifndef WM_NOTIFYICON
#define WM_NOTIFYICON  WM_USER+101  //托盘图标自定义消息
#endif


afx_msg LRESULT OnNotifyIcon(WPARAM wParam,LPARAM lParam);//托盘图标响应函数 


ON_MESSAGE(WM_NOTIFYICON, OnNotifyIcon)//托盘图标消息映射


4.响应托盘图标消息函数
LRESULT CMy123Dlg::OnNotifyIcon(WPARAM wParam, LPARAM lParam) //托盘图标响应函数
{
switch (lParam)
{
case WM_LBUTTONDBLCLK://鼠标左键双击
{

//ShowWindow(SW_SHOW);
break;
}


case WM_RBUTTONDOWN://单击鼠标右键弹出菜单
{
CMenu menu;
menu.LoadMenu(IDR_MENU);//菜单ID
CPoint pos; 
GetCursorPos(&pos); 
CMenu* pMenu = menu.GetSubMenu(0); 
if (NULL != pMenu)
{
SetForegroundWindow();//无此句弹出的菜单不会隐藏
pMenu->TrackPopupMenu (TPM_RIGHTALIGN|TPM_LEFTBUTTON, pos.x, pos.y, this); 
menu.DestroyMenu();
}
break;
}


default:
break;
}
return 0;
}


5.响应系统消息,重写OnCommand
BOOL CLoadDbDlg::OnCommand(WPARAM wParam, LPARAM lParam)
{
// TODO: 在此添加专用代码和/或调用基类
switch (wParam)
{//此处执行右键弹出菜单
case ID_SHOW:
{
ModifyStyleEx(WS_EX_TOOLWINDOW, WS_EX_APPWINDOW);
SetWindowPos(&wndNoTopMost,(iScreenX-Rect.left-Rect.right)/2 ,(iScreenY-Rect.top-Rect.bottom)/2 ,0 ,0, SWP_NOSIZE | SWP_SHOWWINDOW);

break;
}


case ID_EXIT:
{
if(IDYES != MessageBox(_T("您是否确定退出应用程序LoadDb?"), _T("温馨提示"), MB_YESNOCANCEL| MB_ICONQUESTION|MB_DEFBUTTON2))
{
break;
}

Shell_NotifyIcon(NIM_DELETE, &NotifyIcon); //删除托盘图标
CDialog::OnCancel();
break;
}


default:
break;
}


return CDialog::OnCommand(wParam, lParam);
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值