收藏 分享(赏)

C++托盘.doc

上传人:eukav 文档编号:3889332 上传时间:2018-11-25 格式:DOC 页数:3 大小:84.50KB
下载 相关 举报
C++托盘.doc_第1页
第1页 / 共3页
C++托盘.doc_第2页
第2页 / 共3页
C++托盘.doc_第3页
第3页 / 共3页
亲,该文档总共3页,全部预览完了,如果喜欢就下载吧!
资源描述

1、背景需求:1、 MFC 对话框最小化时,只显示系统右下角托盘图标。2、双击托盘,对话框还原。3、右键点击托盘,弹出“关闭”菜单,可关闭对话框。实现步骤:1、创建 MFC 对话框程序(本例程序名为 TaskbarIcon),属性中设置“MinimizeBox”为 true。2、定义自定义消息宏。1 #define NOTIFY_SHOW WM_USER+25003、 OnSysCommand(系统消息响应函数)添加对话框最小化执行代码。01 void CTaskbarIconDlg:OnSysCommand(UINT nID, LPARAM lParam)02 03 if (SC_MINIMIZ

2、E = nID)04 05 NOTIFYICONDATA nid;06 nid.cbSize = (DWORD)sizeof(NOTIFYICONDATA); 07 nid.hWnd = this-m_hWnd; 08 nid.uID = IDR_MAINFRAME; 09 nid.uFlags = NIF_ICON|NIF_MESSAGE|NIF_TIP ; 10 nid.uCallbackMessage = NOTIFY_SHOW;/自定义的消息名称11 nid.hIcon = LoadIcon(AfxGetInstanceHandle(), MAKEINTRESOURCE(IDR_MAI

3、NFRAME); 12 wcscpy_s(nid.szTip, _T(“图标测试“);/信息提示条13 14 Shell_NotifyIcon(NIM_ADD,/在托盘区添加图标15 ShowWindow(SW_HIDE);/隐藏主窗口16 return;17 18 19 /.系统自带代码20 4、托盘自定义消息响应01 BEGIN_MESSAGE_MAP(CTaskbarIconDlg, CDialog)02 /.省略其他消息映射03 04 ON_MESSAGE(NOTIFY_SHOW, OnTrayIcon)05 /AFX_MSG_MAP06 END_MESSAGE_MAP()07 08

4、afx_msg LRESULT OnTrayIcon(WPARAM wParam, LPARAM lParam);09 10 LRESULT CTaskbarIconDlg:OnTrayIcon(WPARAM wParam, LPARAM lParam)11 12 if (wParam != IDR_MAINFRAME)13 14 return 1;15 16 17 switch(lParam)18 19 case WM_RBUTTONUP:20 21 /右键起来时弹出快捷菜单,这里只有一个“关闭”22 23 /声明一个弹出式菜单24 /增加菜单项“关闭”,点击则发送消息 WM_CLOSE 给

5、主窗口(已 25 /隐藏),将程序结束。26 CMenu menu;27 menu.CreatePopupMenu();28 menu.AppendMenu(MF_STRING, ID_APP_EXIT, _T(“关闭“);29 30 /得到鼠标位置31 LPPOINT lpoint= new tagPOINT;32 :GetCursorPos(lpoint);33 34 /确定弹出式菜单的位置 35 menu.TrackPopupMenu(TPM_LEFTALIGN, lpoint-x, lpoint-y,this);36 37 /资源回收38 HMENU hmenu=menu.Detach

6、();39 menu.DestroyMenu();40 41 delete lpoint;42 lpoint = NULL;43 44 break;45 46 case WM_LBUTTONDBLCLK:47 48 /双击左键的处理49 50 /显示界面51 ShowWindow(SW_SHOW);52 /界面置顶53 SetForegroundWindow();54 55 break;56 57 58 59 return 0;60 5、关闭时删除托盘图标。覆盖(override)OnCancel 函数。查看源码打印?01 virtual void OnCancel();02 03 void CTaskbarIconDlg:OnCancel()04 05 /删除任务栏图标06 NOTIFYICONDATA nid;07 nid.hWnd=this-m_hWnd;08 nid.uID=IDR_MAINFRAME;09 Shell_NotifyIcon(NIM_DELETE, 10 11 CDialog:OnCancel();12

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 网络科技 > C/C++资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报