home *** CD-ROM | disk | FTP | other *** search
/ PC World 2000 February / PCWorld_2000-02_cd.bin / Software / TemaCD / tcvpa / data1.cab / MyFileGroup / INCLUDE / Menu.hpp < prev    next >
C/C++ Source or Header  |  1999-06-03  |  4KB  |  122 lines

  1. #ifdef BUILD_TCCORE
  2. #define TCCORELIB __declspec(dllexport)
  3. #else
  4. #ifdef BUILD_LOCAL
  5. #define TCCORELIB
  6. #else
  7. #define TCCORELIB __declspec(dllimport)
  8. #endif
  9. #endif
  10. #define NEW_THIS_MENU_ITEM(mi,pp,text,func,dw_u,cls)    \
  11.     mi=new TC_CMenu(0,text);(pp)->Add(mi);\
  12.     mi->SetCEventHandler(event_t(0,0),this,\
  13.     (C_EVENT_HANDLER)((BOOL(cls::*)(TC_Event*))func),\
  14.     dw_u)
  15.  
  16. /****  Example:
  17.  
  18. void MyClass :: RunPopupMenu (void)
  19. {
  20.   TC_CMenu menu( TC_CMenu::T_POPUP, "" );
  21.   TC_CMenu * mi;
  22.  
  23.   NEW_THIS_MENU_ITEM( mi, &menu, "Some action1",   Ev_SomeAction1, 0, MyClass );
  24.   NEW_THIS_MENU_ITEM( mi, &menu, "Some action2",   Ev_SomeAction2, 0, MyClass );
  25.   NEW_THIS_MENU_ITEM( mi, &menu, "Some action X1", Ev_SomeActionX, 1, MyClass );
  26.   NEW_THIS_MENU_ITEM( mi, &menu, "Some action X2", Ev_SomeActionX, 2, MyClass );
  27.   .......
  28.  
  29.   menu.ExecPopup(x_mouse,y_mouse);
  30. }
  31.  
  32.  
  33. BOOL MyClass :: Ev_SomeAction1 ( TC_Event * )
  34. {
  35.   return TRUE;
  36. }
  37.  
  38.  
  39. BOOL MyClass :: Ev_SomeActionX ( TC_Event * event)
  40. {
  41.   switch( event->dw_user )
  42.   {
  43.     case 1 : DO SOME; return TRUE;
  44.     case 2 : DO SOME; return TRUE;
  45.   }
  46.   return TRUE;
  47. }
  48.  
  49. */
  50. #define NEW_S_MENU_ITEM(mi,pp,text,func,dw_u)    \
  51.     mi=new TC_CMenu(0,text);(pp)->Add(mi);\
  52.     mi->SetSEventHandler(event_t(0,0),\
  53.     (S_EVENT_HANDLER)func,\
  54.     dw_u)
  55.  
  56. // **********************************************************************
  57. class TCCORELIB TC_CMenu 
  58.     : public TC_CEventMaster
  59. {
  60. public: 
  61. enum  {
  62.  T_SEP = -1,
  63.  T_ITEM = 0,
  64.  T_POPUP = 1,
  65. };
  66. public:  int m_Type ;
  67. public:  HMENU m_HMenu ;
  68. public:  int m_Cmd0 ;
  69. public:  int m_Cmd ;
  70. public:  HIMAGELIST hImgLst ;
  71. public:  int iImgIdx ;
  72. public:  char b_Checked ;
  73. public:  char b_Disabled ;
  74. public:  char b_OwnerDraw ;
  75. public:  char b_Bold ;
  76. public:  char _ppp_OwnerDraw ;
  77. public:  int _ppp_CxImg ;
  78. public:  int _ppp_CxLeft ;
  79. public:  int _ppp_CxRight ;
  80. public:  int _mi_Height ;
  81. public:  TC_CMenu* m_Parent ;
  82. public:  TC_CString m_Text ;
  83. public:  TC_CString m_StatusText ;
  84. public:  TC_TArrayPTR <TC_CMenu> aChildren ;
  85. public:  static  HWND m_HWndPPP ;
  86. public:  static  BOOL b_Done ;
  87. public:  static  int m_GCmd ;
  88. public:  static  TCArrayINT a_GCmds ;
  89. public:  static  TC_CMenu* p_CurMenu ;
  90. public:   TC_CMenu (int type, LPCSTR text, int cmd=0)  ;
  91. public: virtual  ~TC_CMenu ()  ;
  92. public: virtual void* GetInterface (LPCSTR name)  ;
  93. public: virtual const char* GetClassName ()  ;
  94. public:  void Clear ()  ;
  95. public:  int Insert (int idx, TC_CMenu *m)  ;
  96. public:  void Add (TC_CMenu *m)  ;
  97. public:  TC_CMenu* Add (LPCSTR text, int cmd, int mask =0)  ;
  98. public:  TC_CMenu * AddSep ()  ;
  99. public:  int Count ()  ;
  100. public:  TC_CMenu* PChild (int idx)  ;
  101. public:  TC_CMenu* GetByCmd (int cmd)  ;
  102. public:  TC_CMenu* GetByHMenu (HMENU hmenu)  ;
  103. public:  void SetupCmds ()  ;
  104. public:  void ExecBar (HWND hWnd)  ;
  105. public:  void RebuildPopup ()  ;
  106. public:  int ExecPopup (int x, int y, HWND hwnd=0)  ;
  107. public: static void InitializeTPM (HWND hwnd)  ;
  108. public:  BOOL Wm_MenuSelect (WPARAM wParam, LPARAM lParam, TC_CString &stt, BOOL mdi_max)  ;
  109. private:  void Clear_HMenu (BOOL me)  ;
  110. private:  void _Add2H ()  ;
  111. private:  void Add2HLoop ()  ;
  112. private:  void Check_CMDs1 ()  ;
  113. private:  void Check_CMDs2 ()  ;
  114. private:  static  WNDPROC oldWndProc ;
  115. private: static LRESULT CALLBACK WndProc (HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)  ;
  116. public:  void Draw (DRAWITEMSTRUCT *dis)  ;
  117. public:  void Measure (MEASUREITEMSTRUCT *mis)  ;
  118.  
  119. }; // end of class TC_CMenu
  120.  
  121. // **********************************************************************
  122.