C++之MFC系统图标任务托盘显示
来源:互联网 发布:c语言为什么叫c语言 编辑:程序博客网 时间:2024/05/08 20:22
MFC支持将任务图标放在系统任务托盘中显示,通过NOTIFYICONDATA结构体实现,下面具体阐述其实现方法:
1.定义结构体变量
NOTIFYICONDATA m_NotifyIcon;
2.结构体成员变量赋值
m_NotifyIcon.cbSize = sizeof(NOTIFYICONDATA); // 结构大小m_NotifyIcon.hWnd = this->m_hWnd; // 接收托盘消息的窗口句柄m_NotifyIcon.uID = IDR_MAINFRAME; // 应用程序中定义的托盘图标IDm_NotifyIcon.hIcon = LoadIcon(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDR_MAINFRAME)); // 托盘图标句柄wcscpy(m_NotifyIcon.szTip,_T("SunjianDlg System Icon Test")); // 图标显示提示字符串m_NotifyIcon.uCallbackMessage = WM_USER_NOTIFY; // 自定义消息,接收图标发送的消息m_NotifyIcon.uFlags = NIF_ICON | NIF_MESSAGE | NIF_TIP; // 设置属性结构体成员变量还有其他其他内容项,经常使用的是以上几项内容。
3.执行添加任务栏图标程序
Shell_NotifyIcon(NIM_ADD,&m_NotifyIcon);
NIM_ADD 表示添加图标;NIM_DELETE表示删除图标;NIM_MODIFY表示修改图标
4.结束后删除图标
Shell_NotifyIcon(NIM_DELETE,&m_NotifyIcon);
其中任务栏图标和应用程序通过先前定义的自定义消息(也可使用系统消息)进行通信,
// 托盘图标消息响应函数,其中wParam参数标示了消息事件发生的任务栏图标ID,// lParam参数根据事件的不同,包含了鼠标或键盘的具体消息。LRESULT CSunjianDlgTestDlg::OnNotifyMsg(WPARAM wparam, LPARAM lparam){if( wparam != IDR_MAINFRAME ){return -1;}switch(lparam){case WM_LBUTTONDOWN:{if( TRUE == m_ShowFlag ){m_ShowFlag = FALSE;ShowWindow(SW_HIDE);}else{m_ShowFlag = TRUE;ShowWindow(SW_SHOW);}}break;case WM_RBUTTONDOWN:{// 注意:菜单是弹出式菜单,菜单索引项是弹出式菜单,子菜单不是CMenu menu;menu.LoadMenuW(IDR_MENU2);CMenu* pPopup = menu.GetSubMenu(0); // 获取菜单句柄,参数表示菜单位置,索引值POINT pt;GetCursorPos(&pt);pPopup->TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON,pt.x,pt.y,this); // 其中可添加TPM_RETURNCMD选项,返回值表示选中的菜单ID项pPopup->DestroyMenu(); // 菜单销毁 // 在此直接使用菜单项处理程序}break;}}
阅读全文
0 0
- C++之MFC系统图标任务托盘显示
- [C++]隐藏/删除/显示托盘图标
- MFC托盘图标
- MFC托盘图标编程
- mfc增加托盘图标
- MFC托盘图标切换
- mfc实现托盘图标
- VS2008向MFC 对话框 添加托盘图标(显示和消失)
- 显示托盘图标
- 托盘图标显示
- 在windows系统任务栏的托盘中显示图标 c++
- 如何使用GTK让系统显示托盘图标
- MFC 设计托盘图标程序
- MFC修改托盘图标问题
- MFC托盘显示
- 地磅称量系统之(52)制作应用程序的托盘功能(显示在操作系统的时间左边的小图标)
- 单击托盘图标,显示菜单
- ubuntu11.04 托盘 图标 显示
- 有关小波的几个术语及常见的小波基介绍
- Linux--线程与进程的总结
- HDU 6165 FFF at Valentine(tarjan缩点+拓扑排序)
- hdu 6171 ida*
- mysql @value -= 用法
- C++之MFC系统图标任务托盘显示
- 【04】淘淘商城-Service层递归拼装ItemCatResult详解
- 字符串模式匹配
- Android开发初级00_1如何在安卓开发之发送广播
- 双色球选号及确认中几等奖
- Codeforces 788B Weird journey (欧拉回路 组合数计数)
- hdu 6098
- 关于redis
- 六分钟八法则塑造优秀程序员