文档详情

任务栏托盘图标及右键菜单实现.pdf

发布:2017-05-20约3.16千字共3页下载文档
文本预览下载声明
VC++任务栏托盘图标及右键菜单实现 作者:xingzhe826 日期:2013 年11 月14 日 1. 创建单文档工程TaskQMenu 2. 设置图标右键菜单,ID 为IDR_TPMENU 3. 初始化托盘图标 // 初始化托盘图标 NOTIFYICONDATA nifd; // NOTIFYICONDATA 结构声明 nifd.cbSize = sizeof(NOTIFYICONDATA); // NOTIFYICONDATA 结构体大小 nifd.hWnd = m_hWnd; // 标识窗口:接收与托盘图标相关的消息 nifd.uID = IDR_MAINFRAME; // 指定任务栏图标 nifd.uFlags = NIF_MESSAGE // 指定该结构体变量的那些成员变量有效 | NIF_ICON | NIF_TIP; nifd.uCallbackMessage = WM_UIMSG; // 自定义消息标识:当托盘图标发生鼠标事 // 件或使用键盘选择或激活图标时,系统将 // 次标识向hWnd 窗口发送消息 nifd.hIcon = theApp.LoadIcon(IDR_MAINFRAME);// 图标句柄 lstrcpy(nifd.szTip, _T(提示文本)); // 托盘图标提示文本 Shell_NotifyIcon(NIM_ADD, tnd); // 安装托盘图标 4. 消息处理 BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd) ON_MESSAGE(WM_UIICON, OnNotifyIcon) // WM_UIICON 消息映射 END_MESSAGE_MAP() afx_msg LRESULT OnNotifyIcon(WPARAM wParam, LPARAM lParam);// 消息处理 LRESULT CMainFrame::OnNotifyIcon(WPARAM wParam, LPARAM lParam) { UINT uID; // 发出该消息的消息的图标ID UINT uMouseMsg; // 鼠标消息 uID = (UINT)wParam; // 参数解析并赋值 uMouseMsg = (UINT)lParam; if(WM_LBUTTONDOWN == uMouseMsg) {// 单击左键 if (IDR_MAINFRAME == uID) { if (IsIconic()) // 是否最小化(图标化)窗口 { ShowWindow(SW_NORMAL); } } } else if (WM_RBUTTONDOWN == uMouseMsg) {// 单击右键 if (IDR_MAINFRAME == uID) { CMenu menu; menu.LoadMenu(IDR_TPMENU); // 加入图标右键快捷菜单 SetForegroundWindow();
显示全部
相似文档