|
系统托盘气泡提示和右键菜单的实现(6) } };
//MyIconMenu.h #pragma once #include "stdafx.h" #include <ContextMenu.h> template <class T> class CMyIconMenu : public CContextMenu<T> { public: BEGIN_MSG_MAP(CContextMenu) COMMAND_ID_HANDLER(ID_RESUME, OnResume) COMMAND_ID_HANDLER(ID_QUIT, OnQuit) END_MSG_MAP() LRESULT OnResume(Word /*wNotifyCode*/, WORD wID, HWND /*hWndCtl*/, BOOL& /*bHandled*/) { T* pT = static_cast<T*>(this); pT->ShowWindow(SW_SHOW); OpenIcon(pT->m_hWnd); return 0; }
LRESULT OnQuit(WORD /*wNotifyCode*/, WORD wID, HWND /*hWndCtl*/, BOOL& /*bHandled*/) { PostQuitMessage(0); return 0; } };
CContextMenu的使用
如果你的窗口需要上下文菜单,只需要从CContextMenu派生一个类,例如:template <class T> class CMyContextMenu : public CContextMenu<T>
然后完成消息映射,例如CMyIconMenu所做的。在你的窗口类(假设为CMyWindowClass)的继承列表里面添加public CMyContextMenu<CMyWindowClass>,在消息映射表中添加CHAIN_MSG_MAP(CMyContextMenu<CMyWindowClass>)
接下来只要在需要显示上下文菜单的地方,调用CreatContextMenu(UINT ID_Menu)就可以了。
CShellIcon的使用
首先要把stdafx.h中IE的版本改成5或者6,例如:
#define _WIN32_IE 0x0600
然后加入CString支持,可能每个项目都几乎用到CString,大家不妨直接修改模板文件,让向导直接把CString加进去算了。
从CContextMenu派生一个类来完成菜单映射,例如CMyIconMenu所作的。
以下用模式对话框来演示如何给其加入托盘功能,蓝色的部分为添加的部分。
#pragma once
|