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.

126 lines
3.4 KiB

  1. /////////////////////////////////////////////////////////////////////////////
  2. //
  3. // Copyright (c) 1996 Microsoft Corporation
  4. //
  5. // Module Name:
  6. // ExtMenu.h
  7. //
  8. // Abstract:
  9. // Definition of the CExtMenuItem class.
  10. //
  11. // Implementation File:
  12. // ExtMenu.cpp
  13. //
  14. // Author:
  15. // David Potter (davidp) August 28, 1996
  16. //
  17. // Revision History:
  18. //
  19. // Notes:
  20. //
  21. /////////////////////////////////////////////////////////////////////////////
  22. #ifndef _EXTMENU_H_
  23. #define _EXTMENU_H_
  24. /////////////////////////////////////////////////////////////////////////////
  25. // Include Files
  26. /////////////////////////////////////////////////////////////////////////////
  27. /////////////////////////////////////////////////////////////////////////////
  28. // Forward Class Declarations
  29. /////////////////////////////////////////////////////////////////////////////
  30. class CExtMenuItem;
  31. class CExtMenuItemList;
  32. /////////////////////////////////////////////////////////////////////////////
  33. // External Class Declarations
  34. /////////////////////////////////////////////////////////////////////////////
  35. interface IWEInvokeCommand;
  36. /////////////////////////////////////////////////////////////////////////////
  37. //
  38. // class CExtMenuItem
  39. //
  40. // Purpose:
  41. // Represents one extension DLL's menu item.
  42. //
  43. /////////////////////////////////////////////////////////////////////////////
  44. class CExtMenuItem : public CObject
  45. {
  46. DECLARE_DYNAMIC(CExtMenuItem);
  47. // Construction
  48. public:
  49. CExtMenuItem(void);
  50. CExtMenuItem(
  51. IN LPCTSTR lpszName,
  52. IN LPCTSTR lpszStatusBarText,
  53. IN ULONG nExtCommandID,
  54. IN ULONG nCommandID,
  55. IN ULONG nMenuItemID,
  56. IN ULONG uFlags,
  57. IN BOOL bMakeDefault,
  58. IN IWEInvokeCommand * piCommand
  59. );
  60. virtual ~CExtMenuItem(void);
  61. protected:
  62. void CommonConstruct(void);
  63. // Attributes
  64. protected:
  65. CString m_strName;
  66. CString m_strStatusBarText;
  67. ULONG m_nExtCommandID;
  68. ULONG m_nCommandID;
  69. ULONG m_nMenuItemID;
  70. ULONG m_uFlags;
  71. BOOL m_bDefault;
  72. IWEInvokeCommand * m_piCommand;
  73. public:
  74. const CString & StrName(void) const { return m_strName; }
  75. const CString & StrStatusBarText(void) const { return m_strStatusBarText; }
  76. ULONG NExtCommandID(void) const { return m_nExtCommandID; }
  77. ULONG NCommandID(void) const { return m_nCommandID; }
  78. ULONG NMenuItemID(void) const { return m_nMenuItemID; }
  79. ULONG UFlags(void) const { return m_uFlags; }
  80. BOOL BDefault(void) const { return m_bDefault; }
  81. IWEInvokeCommand * PiCommand(void) { return m_piCommand; }
  82. // Operations
  83. public:
  84. void SetPopupMenuHandle(HMENU hmenu) { m_hmenuPopup = hmenu; }
  85. #ifdef _DEBUG
  86. // Use MFC's standard object validity technique
  87. virtual void AssertValid(void);
  88. #endif
  89. // Implementation
  90. protected:
  91. HMENU m_hmenuPopup;
  92. CExtMenuItemList * m_plSubMenuItems;
  93. public:
  94. HMENU HmenuPopup(void) const { return m_hmenuPopup; }
  95. CExtMenuItemList * PlSubMenuItems(void) const { return m_plSubMenuItems; }
  96. }; //*** class CExtMenuItem
  97. /////////////////////////////////////////////////////////////////////////////
  98. //
  99. // class CExtMenuItemList
  100. //
  101. /////////////////////////////////////////////////////////////////////////////
  102. class CExtMenuItemList : public CTypedPtrList<CObList, CExtMenuItem *>
  103. {
  104. }; //*** class CExtMenuItemList
  105. /////////////////////////////////////////////////////////////////////////////
  106. #endif // _EXTMENU_H_