XTPControlPopup.h
上传用户:szled88
上传日期:2015-04-09
资源大小:43957k
文件大小:11k
源码类别:

对话框与窗口

开发平台:

Visual C++

  1. // XTPControlPopup.h : interface for the CXTPControlPopup class.
  2. //
  3. // This file is a part of the XTREME COMMANDBARS MFC class library.
  4. // (c)1998-2008 Codejock Software, All Rights Reserved.
  5. //
  6. // THIS SOURCE FILE IS THE PROPERTY OF CODEJOCK SOFTWARE AND IS NOT TO BE
  7. // RE-DISTRIBUTED BY ANY MEANS WHATSOEVER WITHOUT THE EXPRESSED WRITTEN
  8. // CONSENT OF CODEJOCK SOFTWARE.
  9. //
  10. // THIS SOURCE CODE CAN ONLY BE USED UNDER THE TERMS AND CONDITIONS OUTLINED
  11. // IN THE XTREME TOOLKIT PRO LICENSE AGREEMENT. CODEJOCK SOFTWARE GRANTS TO
  12. // YOU (ONE SOFTWARE DEVELOPER) THE LIMITED RIGHT TO USE THIS SOFTWARE ON A
  13. // SINGLE COMPUTER.
  14. //
  15. // CONTACT INFORMATION:
  16. // support@codejock.com
  17. // http://www.codejock.com
  18. //
  19. /////////////////////////////////////////////////////////////////////////////
  20. //{{AFX_CODEJOCK_PRIVATE
  21. #if !defined(__XTPCONTROLPOPUP_H__)
  22. #define __XTPCONTROLPOPUP_H__
  23. //}}AFX_CODEJOCK_PRIVATE
  24. #if _MSC_VER >= 1000
  25. #pragma once
  26. #endif // _MSC_VER >= 1000
  27. #include "XTPControlButton.h"
  28. class CXTPCommandBar;
  29. class CXTPControls;
  30. //===========================================================================
  31. // Summary:
  32. //     CXTPControlPopup is a CXTPControl derived class.
  33. //     It represents a popup-able control.
  34. //===========================================================================
  35. class _XTP_EXT_CLASS CXTPControlPopup : public CXTPControlButton
  36. {
  37. public:
  38. //-----------------------------------------------------------------------
  39. // Summary:
  40. //     Constructs a CXTPControlPopup object
  41. //-----------------------------------------------------------------------
  42. CXTPControlPopup();
  43. //-----------------------------------------------------------------------
  44. // Summary:
  45. //     Destroys a CXTPControlPopup object, handles cleanup and deallocation
  46. //-----------------------------------------------------------------------
  47. virtual ~CXTPControlPopup();
  48. public:
  49. //-----------------------------------------------------------------------
  50. // Summary:
  51. //     Creates a CXTPControlPopup object with the specified type.
  52. // Parameters:
  53. //     controlType - XTPControlType type of popup control. Can be any of the values listed in the Remarks section.
  54. // Remarks:
  55. //     Popup type can be one of the following:
  56. //         * <b>xtpControlPopup</b> Popup type.
  57. //         * <b>xtpControlButtonPopup</b> Button popup.
  58. //         * <b>xtpControlSplitButtonPopup</b> Split button popup.
  59. // Returns:
  60. //     A pointer to a CXTPControlPopup object
  61. //-----------------------------------------------------------------------
  62. static CXTPControlPopup* AFX_CDECL CreateControlPopup(XTPControlType controlType);
  63. public:
  64. //-----------------------------------------------------------------------
  65. // Summary:
  66. //     Call this member to set the child command bar.
  67. // Parameters:
  68. //     pBar - The child command bar.
  69. //     pMenu - The menu to be loaded as a child.
  70. //-----------------------------------------------------------------------
  71. void SetCommandBar(CMenu* pMenu);
  72. void SetCommandBar(CXTPCommandBar* pBar); //<combine CXTPControlPopup::SetCommandBar@CMenu*>
  73. //-----------------------------------------------------------------------
  74. // Summary:
  75. //     Call this member to get the child command bar.
  76. // Returns:
  77. //     A pointer to the child command bar.
  78. //-----------------------------------------------------------------------
  79. CXTPCommandBar* GetCommandBar() const;
  80. //-----------------------------------------------------------------------
  81. // Summary:
  82. //     Call this member to get the control's popup state.
  83. // Returns:
  84. //     TRUE if the control is a popup.
  85. //-----------------------------------------------------------------------
  86. BOOL GetPopuped() const;
  87. //-----------------------------------------------------------------------
  88. // Summary:
  89. //     Reads or writes this object from or to an archive.
  90. // Parameters:
  91. //     pPX - A CXTPPropExchange object to serialize to or from.
  92. //----------------------------------------------------------------------
  93. void DoPropExchange(CXTPPropExchange* pPX);
  94. //-----------------------------------------------------------------------
  95. // Summary:
  96. //     Updates rectangle to set position where child popup bar become visible.
  97. // Parameters:
  98. //     rc - CRect object specifying size of area.
  99. //     bVertical - TRUE if control is located vertically in its parent.
  100. //-----------------------------------------------------------------------
  101. virtual void AdjustExcludeRect(CRect& rc, BOOL bVertical);
  102. //-----------------------------------------------------------------------
  103. // Summary:
  104. //     This method is called to copy the control.
  105. // Parameters:
  106. //     pControl - Points to a source CXTPControl object
  107. //     bRecursive - TRUE to copy recursively.
  108. //-----------------------------------------------------------------------
  109. void Copy(CXTPControl* pControl, BOOL bRecursive = FALSE);
  110. //----------------------------------------------------------------------
  111. // Summary:
  112. //     This method is called when the user activate control using its underline.
  113. //----------------------------------------------------------------------
  114. virtual void OnUnderlineActivate();
  115. protected:
  116. //-----------------------------------------------------------------------
  117. // Summary:
  118. //     This method is called to check if pControlPopup contains in
  119. //     the control recursively.
  120. // Parameters:
  121. //     pControlPopup - Points to a CXTPControlPopup object needed to
  122. //                     check.
  123. // Returns:
  124. //     TRUE if contains; otherwise returns FALSE
  125. //-----------------------------------------------------------------------
  126. BOOL IsContainPopup(CXTPControlPopup* pControlPopup);
  127. //-----------------------------------------------------------------------
  128. // Summary:
  129. //     Call this member to expand the parent popup bar.
  130. //-----------------------------------------------------------------------
  131. void ExpandCommandBar();
  132. //-----------------------------------------------------------------------
  133. // Summary:
  134. //     This method is called when the control becomes selected.
  135. // Parameters:
  136. //     bSelected - TRUE if the control becomes selected.
  137. // Returns:
  138. //     TRUE if successful; otherwise returns FALSE
  139. //-----------------------------------------------------------------------
  140. BOOL OnSetSelected(int bSelected);
  141. //-----------------------------------------------------------------------
  142. // Summary:
  143. //     This method is called when the user clicks the control.
  144. // Parameters:
  145. //     bKeyboard - TRUE if the control is selected using the keyboard.
  146. //     pt - Mouse cursor position.
  147. //-----------------------------------------------------------------------
  148. void OnClick(BOOL bKeyboard = FALSE, CPoint pt = CPoint(0, 0));
  149. //-----------------------------------------------------------------------
  150. // Summary:
  151. //     This method is called after the mouse hovers over the control.
  152. //-----------------------------------------------------------------------
  153. void OnMouseHover();
  154. //----------------------------------------------------------------------
  155. // Summary:
  156. //     This member is called when the mouse cursor moves.
  157. // Parameters:
  158. //     point - Specifies the x- and y-coordinate of the cursor.
  159. //----------------------------------------------------------------------
  160. virtual void OnMouseMove(CPoint point);
  161. //-----------------------------------------------------------------------
  162. // Summary:
  163. //     This method is called to popup the control.
  164. // Parameters:
  165. //     bPopup - TRUE to set popup.
  166. // Returns:
  167. //     TRUE if successful; otherwise returns FALSE
  168. //-----------------------------------------------------------------------
  169. virtual BOOL OnSetPopup(BOOL bPopup);
  170. //-----------------------------------------------------------------------
  171. // Summary:
  172. //     This member is called when the user releases the left mouse
  173. //     button.
  174. // Parameters:
  175. //     point - Specifies the x- and y-coordinate of the cursor.
  176. //-----------------------------------------------------------------------
  177. virtual void OnLButtonUp(CPoint point);
  178. //-----------------------------------------------------------------------
  179. // Summary:
  180. //     This member is called when the user double-clicks the left mouse
  181. //     button.
  182. // Parameters:
  183. //     point - Specifies the x- and y-coordinates of the cursor.
  184. // Returns:
  185. //     TRUE if successful; otherwise returns FALSE
  186. //-----------------------------------------------------------------------
  187. virtual BOOL OnLButtonDblClk(CPoint point);
  188. //-----------------------------------------------------------------------
  189. // Summary:
  190. //     This method is called when the user moves the mouse over the
  191. //     control.
  192. // Parameters:
  193. //     pDataObject - Points to a CXTPControl object
  194. //     point - Mouse position.
  195. //     dropEffect - DROPEFFECT enumerator.
  196. //-----------------------------------------------------------------------
  197. void OnCustomizeDragOver(CXTPControl* pDataObject, CPoint point, DROPEFFECT& dropEffect);
  198. //----------------------------------------------------------------------
  199. // Summary:
  200. //     This member checks if the user can drop the control.
  201. // Parameters:
  202. //     pCommandBar - Points to a CXTPCommandBar object
  203. //     point       - Mouse position.
  204. //     dropEffect  - DROPEFFECT enumerator.
  205. // Returns:
  206. //     TRUE if successful, otherwise returns FALSE
  207. //----------------------------------------------------------------------
  208. virtual BOOL IsCustomizeDragOverAvail(CXTPCommandBar* pCommandBar, CPoint point, DROPEFFECT& dropEffect);
  209. //-----------------------------------------------------------------------
  210. // Summary:
  211. //     Call this member to compare controls.
  212. // Parameters:
  213. //     pOther - The control needed to compare with.
  214. // Returns:
  215. //     TRUE if the controls are identical.
  216. //-----------------------------------------------------------------------
  217. virtual BOOL Compare(CXTPControl* pOther);
  218. //-----------------------------------------------------------------------
  219. // Summary:
  220. //     Call this member to update the shadow of the control.
  221. //-----------------------------------------------------------------------
  222. virtual void UpdateShadow();
  223. protected:
  224. //-----------------------------------------------------------------------
  225. // Summary:
  226. //     This method is called from LoadCommandBars
  227. //     to restore controls and its child commandbars
  228. // Parameters:
  229. //     pCommandBarList - CommandBars collection contains all commandbars was restored
  230. //-----------------------------------------------------------------------
  231. virtual void RestoreCommandBarList(CXTPCommandBarList* pCommandBarList);
  232. protected:
  233. BOOL            m_bPopup;           // TRUE if popuped.
  234. CXTPCommandBar* m_pCommandBar;      // Child popup bar.
  235. DWORD           m_dwCommandBarID;   // Child popup id.
  236. BOOL            m_bShowShadow;      // TRUE to show shadow
  237. public:
  238. DECLARE_XTP_CONTROL(CXTPControlPopup)
  239. friend class CXTPControls;
  240. friend class CXTPPopupBar;
  241. friend class CXTPCommandBar;
  242. };
  243. //////////////////////////////////////////////////////////////////////////
  244. AFX_INLINE CXTPCommandBar* CXTPControlPopup::GetCommandBar() const {
  245. return m_pCommandBar;
  246. }
  247. AFX_INLINE BOOL CXTPControlPopup::GetPopuped() const{
  248. return m_bPopup;
  249. }
  250. #endif //#if !defined(__XTPCONTROLPOPUP_H__)