Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

120 lines
2.5 KiB

  1. //
  2. // lbmenu.h
  3. //
  4. // Generic ITfTextEventSink object
  5. //
  6. #ifndef LBMENU_H
  7. #define LBMENU_H
  8. #include "ctfutb.h"
  9. #include "ptrary.h"
  10. class CCicLibMenu;
  11. //////////////////////////////////////////////////////////////////////////////
  12. //
  13. // CCicLibMenuItem
  14. //
  15. //////////////////////////////////////////////////////////////////////////////
  16. class CCicLibMenuItem
  17. {
  18. public:
  19. CCicLibMenuItem()
  20. {
  21. _uId = 0;
  22. _dwFlags = 0;
  23. _hbmp = NULL;
  24. _hbmpMask = NULL;
  25. _bstr = NULL;
  26. _pSubMenu = NULL;
  27. }
  28. ~CCicLibMenuItem();
  29. BOOL Init(UINT uId, DWORD dwFlags, HBITMAP hbmp, HBITMAP hbmpMask, const WCHAR *pch, ULONG cch, CCicLibMenu *pSubMenu);
  30. UINT GetId() {return _uId;}
  31. DWORD GetFlags() {return _dwFlags;}
  32. HBITMAP GetBitmap() {return _hbmp;}
  33. HBITMAP GetBitmapMask() {return _hbmpMask;}
  34. WCHAR *GetText() {return _bstr;}
  35. CCicLibMenu *GetSubMenu() {return _pSubMenu;}
  36. void ClearBitmaps()
  37. {
  38. _hbmp = NULL;
  39. _hbmpMask = NULL;
  40. }
  41. private:
  42. static HBITMAP CreateBitmap(HBITMAP hbmp);
  43. protected:
  44. UINT _uId;
  45. DWORD _dwFlags;
  46. HBITMAP _hbmp;
  47. HBITMAP _hbmpMask;
  48. BSTR _bstr;
  49. CCicLibMenu *_pSubMenu;
  50. };
  51. //////////////////////////////////////////////////////////////////////////////
  52. //
  53. // CCicLibMenu
  54. //
  55. //////////////////////////////////////////////////////////////////////////////
  56. class CCicLibMenu : public ITfMenu
  57. {
  58. public:
  59. CCicLibMenu();
  60. virtual ~CCicLibMenu();
  61. //
  62. // IUnknown methods
  63. //
  64. STDMETHODIMP QueryInterface(REFIID riid, void **ppvObj);
  65. STDMETHODIMP_(ULONG) AddRef(void);
  66. STDMETHODIMP_(ULONG) Release(void);
  67. //
  68. // ITfMenu
  69. //
  70. STDMETHODIMP AddMenuItem(UINT uId,
  71. DWORD dwFlags,
  72. HBITMAP hbmp,
  73. HBITMAP hbmpMask,
  74. const WCHAR *pch,
  75. ULONG cch,
  76. ITfMenu **ppMenu);
  77. virtual CCicLibMenu *CreateSubMenu()
  78. {
  79. return new CCicLibMenu;
  80. }
  81. virtual CCicLibMenuItem *CreateMenuItem()
  82. {
  83. return new CCicLibMenuItem;
  84. }
  85. UINT GetItemCount()
  86. {
  87. return _rgItem.Count();
  88. }
  89. CCicLibMenuItem *GetItem(UINT i)
  90. {
  91. return _rgItem.Get(i);
  92. }
  93. protected:
  94. CPtrArray<CCicLibMenuItem> _rgItem;
  95. ULONG _cRef;
  96. };
  97. #endif LBMENU_H