QQ登录

只需一步,快速开始

7.上位机VC MFC任务栏托盘弹出菜单的实现

[ 复制链接 ]
托盘弹出菜单的实现

功能展示
•在我们使用360,QQ等软件时,系统的任务栏中会显示一个托盘图标,用户鼠标右键时,就会弹出一个快捷菜单,进行常用功能的操作。当前实例就实现了这一功能,效果如图

7.上位机VC MFC任务栏托盘弹出菜单的实现

7.上位机VC MFC任务栏托盘弹出菜单的实现

要点提示

设计任务栏的托盘菜单,关键一点是使用函数Shell_NotifyIcon()
Shell_NotifyIcon( DWORD dwMessage, PNOTIFYICONDATA pnid)
dwMessage可为NIM_ADD添加图标到任务栏. 从任务栏删除一个图标.  NIM_MODIFY 修改任务栏的一个图标;
MIN_DELETE从任务栏删除一个图标
pnid 结构体参数有
cbSize 确定结构体大小.
hWnd 接收任务菜单的窗口句柄.
uID 任务样图标ID.
uFlags 指定结构体中要使用的成员:
uCallbackMessage 应用程序自定义消息标识符. 系统会发送该消息到hWnd 的窗口中;
hIcon菜单的图标句柄
szTip是提示文本;
我们只要使用这一函数便可实现托盘弹出菜单的功能

实现功能

•1.新建一个对话框应用程序

•2.添加一结构体变量NOTIFYICONDATA m_traydata;并初始化

•  m_traydata.cbSize = sizeof(NOTIFYICONDATA);

•  m_traydata.hIcon =AfxGetApp()->LoadIcon(IDI_TRAYICON);

•  m_traydata.hWnd = m_hWnd;

•  char *m_str = "系统管理";

•  strncpy(m_traydata.szTip,m_str,strlen(m_str)+1);//strlen+1表示将空字符拷贝到目标字符串中

•  m_traydata.uCallbackMessage = WM_TRARMESSAGE;

•  m_traydata.uFlags =NIF_ICON|NIF_MESSAGE|NIF_TIP;

•在对话框的ONsysCommand中判断用户是否单击了最小化按钮,是则实现托盘菜单的加载

•voidCTrayPopMenuDlg::OnSysCommand(UINT nID, LPARAM lParam)

•{if((nID & 0xFFF0) == IDM_ABOUTBOX)

•  {CAboutDlg dlgAbout; dlgAbout.DoModal();

•  } else if ((nID & 0xFFF0) == SC_MINIMIZE )

•  {ShowWindow(SW_HIDE);Shell_NotifyIcon(NIM_ADD,&m_traydata);}

•  else

•  {CDialog::OnSysCommand(nID, lParam);

•  }

•}

•再实现对自定义消息的处理

•voidCTrayPopMenuDlg::OnTrayMessage(WPARAM wParam, LPARAM lParam)

•{if(lParam == WM_LBUTTONDOWN)

•  {ShowWindow(SW_RESTORE);}

•  else if (lParam == WM_RBUTTONDOWN)

•  {CPoint m_point; ::GetCursorPos(&m_point);CIconMenu* m_submenu = (CIconMenu*)m_menu.GetSubMenu(0);

•m_submenu->TrackPopupMenu(TPM_LEFTALIGN|TPM_RIGHTBUTTON,m_point.x,m_point.y,AfxGetApp()->m_pMainWnd,TPM_LEFTALIGN);

•  }

•}
•最后在程序能出时,对托盘菜单进行清除

•voidCGkbc8Dlg::OnExit()

•{:Add your command handler code here

•  if(MessageBox("确定要退出吗?","系统提示",MB_OKCANCEL|MB_ICONQUESTION)!=IDOK)

•  return;

•  //添加系统托盘

•  Shell_NotifyIcon(NIM_DELETE,&m_traydata);

•  CDialog::OnCancel();

•}

•下面我们结合编程软件演示托盘菜单的实现过程
源码及视频教程下载(仅电脑上可见):
请点击此处下载

请先注册会员后在进行下载

已注册会员,请先登录后下载

文件名称:7.上位机VC MFC任务栏托盘弹出菜单的实现.rar 
文件大小:857.13 KB  售价:1金币
下载权限: 不限 以上或 VIP会员   [购买捐助会员]   [充值积分]   有问题联系我

  

您的支持是我们创作的动力!  

  

您可花点闲钱积分自助任意充值

  

成为VIP会员 全站资源任意下载永久更新!


回复

使用道具 举报

点击查看
快速回复 返回列表 客服中心 搜索