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 #include "MyIconMenu.h" #include <ShellIcon.h> class CMainDlg : public CDialogImpl<CMainDlg>, public CShellIcon<CMainDlg, CMyIconMenu<CMainDlg>, IDR_ICONMENU> { public: enum { IDD = IDD_MAINDLG }; typedef CShellIcon<CMainDlg, CMyIconMenu<CMainDlg>, IDR_ICONMENU> CMyShellIcon; BEGIN_MSG_MAP(CMainDlg) MESSAGE_HANDLER(WM_INITDIALOG, OnInitDialog) COMMAND_ID_HANDLER(ID_APP_ABOUT, OnAppAbout) COMMAND_ID_HANDLER(IDOK, OnOK) COMMAND_ID_HANDLER(IDCANCEL, OnCancel) CHAIN_MSG_MAP(CMyShellIcon) END_MSG_MAP() LRESULT OnInitDialog(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& /*bHandled*/) { // center the dialog on the screen CenterWindow(); // set icons HICON hIcon = (HICON)::LoadImage(_Module.GetResourceInstance(), MAKEINTRESOURCE(IDR_MAINFRAME), IMAGE_ICON, ::GetSystemMetrics(SM_CXICON), ::GetSystemMetrics(SM_CYICON), LR_DEFAULTCOLOR); SetIcon(hIcon, TRUE); HICON hIconSmall = (HICON)::LoadImage(_Module.GetResourceInstance(), MAKEINTRESOURCE(IDR_MAINFRAME), IMAGE_ICON, ::GetSystemMetrics(SM_CXSMICON), ::GetSystemMetrics(SM_CYSMICON), LR_DEFAULTCOLOR); SetIcon(hIconSmall, FALSE); CreateShellIcon(); return TRUE; } …………………… }; 在想弹出气泡的时候调用BOOL BalloonToolTips(LPCTSTR info)
|