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

对话框与窗口

开发平台:

Visual C++

  1. // XTPShortcutBarPane.h interface for the CXTPShortcutBarPane class.
  2. //
  3. // This file is a part of the XTREME SHORTCUTBAR 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(__XTPSHORTCUTBARPANE_H__)
  22. #define __XTPSHORTCUTBARPANE_H__
  23. //}}AFX_CODEJOCK_PRIVATE
  24. #if _MSC_VER > 1000
  25. #pragma once
  26. #endif // _MSC_VER > 1000
  27. class CXTPShortcutBar;
  28. class CXTPShortcutBarPane;
  29. //-----------------------------------------------------------------------
  30. // Summary:
  31. //     CXTPShortcutBarPaneItem is the base class representing an item of the panes.
  32. //-----------------------------------------------------------------------
  33. class _XTP_EXT_CLASS CXTPShortcutBarPaneItem
  34. {
  35. protected:
  36. //-----------------------------------------------------------------------
  37. // Summary:
  38. //     Constructs a CXTPShortcutBarPaneItem object.
  39. // Parameters:
  40. //     lpszCaption - Caption of the item
  41. //     pWnd - Child window associated with item
  42. //     nHeight - Height of the item
  43. //-----------------------------------------------------------------------
  44. CXTPShortcutBarPaneItem(LPCTSTR lpszCaption, CWnd* pWnd, int nHeight);
  45. public:
  46. //-----------------------------------------------------------------------
  47. // Summary:
  48. //     Returns rectangle of caption.
  49. //-----------------------------------------------------------------------
  50. CRect GetCaptionRect() const;
  51. //-----------------------------------------------------------------------
  52. // Summary:
  53. //     Retrieves the caption of the pane.
  54. //-----------------------------------------------------------------------
  55. CString GetCaption() const;
  56. //-----------------------------------------------------------------------
  57. // Summary:
  58. //     This method sets the text caption of the CXTPShortcutBarPaneItem.
  59. // Parameters:
  60. //     lpszCaption - New Caption of the pane.
  61. //-----------------------------------------------------------------------
  62. void SetCaption(LPCTSTR lpszCaption);
  63. //-----------------------------------------------------------------------
  64. // Summary:
  65. //     Call this method to set height of the item.
  66. // Parameters:
  67. //     nHeight - Height of client area of the item.
  68. //-----------------------------------------------------------------------
  69. void SetHeight(int nHeight);
  70. //-----------------------------------------------------------------------
  71. // Summary:
  72. //     Call this method to determine height of the item.
  73. // Returns:
  74. //     Height of the item.
  75. //-----------------------------------------------------------------------
  76. int GetHeight() const;
  77. //-----------------------------------------------------------------------
  78. // Summary:
  79. //     Call this method to show/hide caption
  80. // Parameters:
  81. //     bShowCaption - TRUE to show caption; FALSE to hide
  82. //-----------------------------------------------------------------------
  83. void ShowCaption(BOOL bShowCaption);
  84. BOOL IsHighlighted() const;
  85. BOOL IsExpandable() const;
  86. BOOL IsExpanded() const;
  87. void SetExpandable(BOOL bExpandable);
  88. void SetExpanded(BOOL bExpanded);
  89. protected:
  90. CString m_strCaption;   // Caption of the item
  91. CRect m_rcCaption;      // Rectangle of the caption.
  92. CRect m_rcClient;       // Bounding rectangle of the client area.
  93. CWnd* m_pWndClient;     // Associated child window.
  94. int m_nHeight;          // Height of the item.
  95. BOOL m_bShowCaption;    // TRUE to show caption
  96. CXTPShortcutBarPane* m_pPane;   // Parent pane object
  97. BOOL m_bExpandable;     // TRUE if pane is expandable
  98. BOOL m_bExpanded;       // TRUE if pane is expanded
  99. friend class CXTPShortcutBarPane;
  100. };
  101. //===========================================================================
  102. // Summary:
  103. //     CXTPShortcutBarPane is a CWnd derived class. It is used as client area
  104. //     of ShortcutBar control.
  105. //===========================================================================
  106. class _XTP_EXT_CLASS CXTPShortcutBarPane : public CWnd
  107. {
  108. DECLARE_DYNAMIC(CXTPShortcutBarPane)
  109. public:
  110. //-----------------------------------------------------------------------
  111. // Summary:
  112. //     Constructs a CXTPShortcutBarPane object.
  113. //-----------------------------------------------------------------------
  114. CXTPShortcutBarPane();
  115. //-----------------------------------------------------------------------
  116. // Summary:
  117. //     Destroys a CXTPShortcutBarPane object, handles cleanup and deallocation.
  118. //-----------------------------------------------------------------------
  119. virtual ~CXTPShortcutBarPane();
  120. public:
  121. //-----------------------------------------------------------------------
  122. // Summary:
  123. //     This method creates the CXTPShortcutBarPane control.
  124. // Parameters:
  125. //     lpszCaption - Caption of the pane.
  126. //     pParent - parent CXTPShortcutBar class.
  127. //-----------------------------------------------------------------------
  128. BOOL Create(LPCTSTR lpszCaption, CXTPShortcutBar* pParent);
  129. //-----------------------------------------------------------------------
  130. // Summary:
  131. //     Call this method to get the caption of the pane.
  132. //-----------------------------------------------------------------------
  133. CString GetCaption() const;
  134. //-----------------------------------------------------------------------
  135. // Summary:
  136. //     This method sets the text caption of the CXTPShortcutBarPane.
  137. // Parameters:
  138. //     lpszCaption - New Caption of the pane.
  139. //-----------------------------------------------------------------------
  140. void SetCaption(LPCTSTR lpszCaption);
  141. //-----------------------------------------------------------------------
  142. // Summary:
  143. //     Call this method to add sub item of pane.
  144. // Parameters:
  145. //     lpszCaption - Caption of the item that is to be added.
  146. //     pWnd - Associated child window of the item.
  147. //     nHeight - Height of the item.
  148. //-----------------------------------------------------------------------
  149. CXTPShortcutBarPaneItem* AddItem(LPCTSTR lpszCaption, CWnd* pWnd, int nHeight);
  150. //-----------------------------------------------------------------------
  151. // Summary:
  152. //     This method retrieves item with specified index.
  153. // Parameters:
  154. //     nIndex - Specifies the zero-based index of the item to retrieve.
  155. // Returns:
  156. //     A pointer to a CXTPShortcutBarPaneItem object.
  157. //-----------------------------------------------------------------------
  158. CXTPShortcutBarPaneItem* GetItem(int nIndex) const;
  159. //-----------------------------------------------------------------------
  160. // Summary:
  161. //     Call this member function to set the indent placed around the
  162. //     client area of the ShortcutBar.  The indent will be placed around the
  163. //     corresponding CXTPShortcutBarPaneItem when displayed.
  164. // Parameters:
  165. //     left   - Amount of space placed between the left client border
  166. //              and the left border of the ShortcutBar client area.
  167. //     top    - Amount of space placed between the top client border
  168. //              and the top border of the ShortcutBar client area.
  169. //     right  - Amount of space placed between the right client border
  170. //              and the right border of the ShortcutBar client area.
  171. //     bottom - Amount of space placed between the bottom client border
  172. //              and the bottom border of the ShortcutBar client area.
  173. //-----------------------------------------------------------------------
  174. void SetIndent(int left, int top, int right, int bottom);
  175. //-----------------------------------------------------------------------
  176. // Summary:
  177. //     Call this method to show/hide caption
  178. // Parameters:
  179. //     bShowCaption - TRUE to show caption; FALSE to hide
  180. //-----------------------------------------------------------------------
  181. void ShowCaption(BOOL bShowCaption);
  182. //-----------------------------------------------------------------------
  183. // Summary:
  184. //     This method sets the minimum height of the client area
  185. // Parameters:
  186. //     nMinHeight - Specifies the minimum height in pixels of the client.
  187. //-----------------------------------------------------------------------
  188. void SetMinimumClientHeight(int nMinHeight);
  189. //-----------------------------------------------------------------------
  190. // Summary:
  191. //     Determines the minimum height of the client area
  192. // Returns:
  193. //     minimum height in pixels of the client.
  194. //-----------------------------------------------------------------------
  195. virtual int GetMinimumClientHeight() const;
  196. CXTPShortcutBarPaneItem* HitTest(CPoint point) const;
  197. void RecalcLayout();
  198. protected:
  199. //{{AFX_CODEJOCK_PRIVATE
  200. DECLARE_MESSAGE_MAP()
  201. //{{AFX_MSG(CXTPShortcutBarPane)
  202. afx_msg void OnSize(UINT nType, int cx, int cy);
  203. afx_msg BOOL OnEraseBkgnd(CDC* pDC);
  204. afx_msg void OnPaint();
  205. afx_msg LRESULT OnPrintClient(WPARAM wParam, LPARAM /*lParam*/);
  206. afx_msg void OnDraw(CDC* pDC);
  207. void OnMouseMove(UINT nFlags, CPoint point);
  208. void OnMouseLeave();
  209. void OnLButtonDown(UINT nFlags, CPoint point);
  210. BOOL OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message);
  211. //}}AFX_MSG
  212. //}}AFX_CODEJOCK_PRIVATE
  213. private:
  214. BOOL Create(LPCTSTR lpszClassName, LPCTSTR lpszWindowName, DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID, CCreateContext* pContext = NULL);
  215. protected:
  216. CXTPShortcutBar* m_pShortcutBar;    // Parent CXTPShortcutBar class.
  217. CString m_strCaption;               // Caption of the pane.
  218. CArray<CXTPShortcutBarPaneItem*, CXTPShortcutBarPaneItem*> m_arrItems;  // Array of items.
  219. CRect m_rcIndent;                   // Indentationpadding around the client pane
  220. BOOL m_bShowCaption;                // TRUE to show caption
  221. int m_nMinClientHeight;             // The minimum height of client area.
  222. CXTPShortcutBarPaneItem* m_pHighlighted;
  223. HCURSOR m_hHandCursor; // Hand cursor
  224. friend class CXTPShortcutBarPaneItem;
  225. };
  226. /////////////////////////////////////////////////////////////////////////////
  227. AFX_INLINE CString CXTPShortcutBarPane::GetCaption() const {
  228. return m_strCaption;
  229. }
  230. AFX_INLINE void CXTPShortcutBarPane::SetIndent(int left, int top, int right, int bottom) {
  231. m_rcIndent.SetRect(left, top, right, bottom);
  232. }
  233. AFX_INLINE void CXTPShortcutBarPane::ShowCaption(BOOL bShowCaption) {
  234. m_bShowCaption = bShowCaption;
  235. }
  236. AFX_INLINE BOOL CXTPShortcutBarPane::Create(LPCTSTR lpszClassName, LPCTSTR lpszWindowName, DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID, CCreateContext* pContext) {
  237. return CWnd::Create(lpszClassName, lpszWindowName, dwStyle, rect, pParentWnd, nID, pContext);
  238. }
  239. AFX_INLINE CRect CXTPShortcutBarPaneItem::GetCaptionRect() const {
  240. return m_rcCaption;
  241. }
  242. AFX_INLINE int CXTPShortcutBarPaneItem::GetHeight() const {
  243. return m_nHeight;
  244. }
  245. AFX_INLINE BOOL CXTPShortcutBarPaneItem::IsHighlighted() const {
  246. return m_pPane->m_pHighlighted == this;
  247. }
  248. AFX_INLINE CString CXTPShortcutBarPaneItem::GetCaption() const {
  249. return m_strCaption;
  250. }
  251. AFX_INLINE void CXTPShortcutBarPaneItem::ShowCaption(BOOL bShowCaption) {
  252. m_bShowCaption = bShowCaption;
  253. }
  254. AFX_INLINE void CXTPShortcutBarPane::SetMinimumClientHeight(int nMinHeight) {
  255. m_nMinClientHeight = nMinHeight;
  256. }
  257. AFX_INLINE int CXTPShortcutBarPane::GetMinimumClientHeight() const {
  258. return m_nMinClientHeight;
  259. }
  260. AFX_INLINE BOOL CXTPShortcutBarPaneItem::IsExpandable() const {
  261. return m_bExpandable && m_bShowCaption;
  262. }
  263. AFX_INLINE BOOL CXTPShortcutBarPaneItem::IsExpanded() const {
  264. return m_bExpanded;
  265. }
  266. AFX_INLINE void CXTPShortcutBarPaneItem::SetExpandable(BOOL bExpandable) {
  267. m_bExpandable = bExpandable;
  268. }
  269. AFX_INLINE void CXTPShortcutBarPaneItem::SetExpanded(BOOL bExpanded) {
  270. if (m_bExpanded != bExpanded)
  271. {
  272. m_bExpanded = bExpanded;
  273. m_pPane->RecalcLayout();
  274. }
  275. }
  276. #endif // !defined(__XTPSHORTCUTBARPANE_H__)