正在阅读:系统托盘气泡提示和右键菜单的实现系统托盘气泡提示和右键菜单的实现

2006-04-11 09:41 出处: 作者:happycock 责任编辑:xietaoming

  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)

键盘也能翻页,试试“← →”键

关注我们

最新资讯离线随时看 聊天吐槽赢奖品