TrayIconMenu.h
上传用户:liguizhu
上传日期:2015-11-01
资源大小:2422k
文件大小:3k
源码类别:

P2P编程

开发平台:

Visual C++

  1. /*
  2.  *  Openmysee
  3.  *
  4.  *  This program is free software; you can redistribute it and/or modify
  5.  *  it under the terms of the GNU General Public License as published by
  6.  *  the Free Software Foundation; either version 2 of the License, or
  7.  *  (at your option) any later version.
  8.  *
  9.  *  This program is distributed in the hope that it will be useful,
  10.  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
  11.  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  12.  *  GNU General Public License for more details.
  13.  *
  14.  *  You should have received a copy of the GNU General Public License
  15.  *  along with this program; if not, write to the Free Software
  16.  *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  17.  *
  18.  */
  19.  #ifndef _C_CTRAYICONMENU_H
  20. #define _C_CTRAYICONMENU_H
  21. #pragma once
  22. class CTrayIconMenu
  23. {
  24. public:
  25. CTrayIconMenu(void);
  26. ~CTrayIconMenu(void);
  27. //////////////////////////////////预设的菜单命令常数////////////////////////
  28. enum MENUCMDID
  29. {
  30. ID_POPUP = 0, //子菜单
  31. ID_SEPERATOR = 1, //分隔线
  32. ID_EXTERNAL = 2, //外部加入的子菜单
  33. ID_LANGUAGE = 3, //多语言选择子菜单
  34. ID_END = -1, //菜单终了
  35. };
  36. ////////////////////////////////////////////////////////////////////
  37. BOOL ShowMenu(HWND hparent, const UINT_PTR* p_cmdID, const TCHAR* p_cmdstr);
  38. BOOL OnMenuPopup(HMENU hmenu, int pos);
  39.     LANGID    GetCurLanguage(){return m_curLanguage;}
  40. protected:
  41. HWND hWnd; //父窗口
  42. LANGID m_curLanguage; //菜单语言
  43. HMENU h_popup; //当前的弹出窗口
  44. HMENU MakeLanguageMenu(); //生成语言栏的子菜单
  45. //菜单操作函数//
  46. void GetMenuStr(LPTSTR p_buf, UINT size);
  47. HMENU MakeMenu(const UINT_PTR*& p_cmdID, const TCHAR*& p_cmdstr); //用p_cmdID和p_cmdstr的数据生成一个菜单
  48. void ReleaseMenu(HMENU hmenu, const UINT_PTR*& p_cmdID); //释放菜单。避免使用ID_EXTERNAL连接入的菜单被破坏
  49. BOOL ShowMenu(const UINT_PTR* p_traycmd, const TCHAR* p_traystr); //实际地显示菜单
  50. //菜单UI处理函数//
  51. virtual UINT MenuUI(UINT m_cmdID); //获得某个命令在菜单上的UI,比如check或者grayed
  52. //菜单命令处理函数//
  53. virtual BOOL MenuCommand(UINT m_cmdID);
  54. //实际的命令处理函数
  55. BOOL OnSwitchLanguageEx(UINT m_language);
  56. };
  57. //语言菜单命令常数
  58. enum TRAYCMDID
  59. {
  60.     TRAYWM_LANGUAGECHANGE = WM_APP + 99,
  61. TRAYWM_LANGUAGESTART = WM_APP + 100,
  62. TRAYWM_LANGUAGEEND = WM_APP + 150,
  63. };
  64. enum LANGUAGE_ID{
  65. DEFAULT_LANG_ID = 0x0409, // 默认语言
  66. HONGKONG_LANG_ID = 0x0c04, // 香港默认语言
  67. TAIWAN_LANG_ID = 0x0404, // 台湾默认语言
  68. MAINLAND_LANG_ID = 0x0804, // 内地默认语言
  69. MAX_KEY_BUFFER = 80, // 字符语言ID的长度限制
  70. };
  71. /*const UINT_PTR m_traycmd[] = 
  72. {CTrayIconMenu::ID_EXTERNAL, 0, CTrayIconMenu::ID_SEPERATOR,
  73. TRAYWM_ABOUT, CTrayIconMenu::ID_SEPERATOR, 
  74. TRAYWM_HELP, CTrayIconMenu::ID_SEPERATOR, 
  75. TRAYWM_UPDATE, CTrayIconMenu::ID_SEPERATOR,
  76. CTrayIconMenu::ID_POPUP,
  77. TRAYWM_LANGUAGESTART, TRAYWM_LANGUAGESTART + 1, TRAYWM_LANGUAGESTART + 2, 
  78. CTrayIconMenu::ID_END, 
  79. CTrayIconMenu::ID_SEPERATOR, 
  80. TRAYWM_EXIT, 
  81. CTrayIconMenu::ID_END};*/
  82. #endif