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

对话框与窗口

开发平台:

Visual C++

  1. // XTPTaskPanelGroupItem.h interface for the CXTPTaskPanelGroupItem class.
  2. //
  3. // This file is a part of the XTREME TASKPANEL 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(__XTPTASKPANELGROUPITEM_H__)
  22. #define __XTPTASKPANELGROUPITEM_H__
  23. //}}AFX_CODEJOCK_PRIVATE
  24. #if _MSC_VER > 1000
  25. #pragma once
  26. #endif // _MSC_VER > 1000
  27. #include "XTPTaskPanelItem.h"
  28. //===========================================================================
  29. // Summary:
  30. //     CXTPTaskPanelGroupItem is a CXTPTaskPanelItem derived class. It is used in TaskPanel control
  31. //     as single item of the group.
  32. //===========================================================================
  33. class _XTP_EXT_CLASS CXTPTaskPanelGroupItem : public CXTPTaskPanelItem
  34. {
  35. DECLARE_SERIAL(CXTPTaskPanelGroupItem)
  36. public:
  37. //-------------------------------------------------------------------------
  38. // Summary:
  39. //     Constructs a CXTPTaskPanelGroupItem object
  40. //-------------------------------------------------------------------------
  41. CXTPTaskPanelGroupItem();
  42. //-----------------------------------------------------------------------
  43. // Summary:
  44. //     Destroys a CXTPTaskPanelGroupItem object, handles cleanup and deallocation.
  45. //-----------------------------------------------------------------------
  46. virtual ~CXTPTaskPanelGroupItem();
  47. public:
  48. //-----------------------------------------------------------------------
  49. // Summary:
  50. //     This method is called when item must be repositioned.
  51. // Parameters:
  52. //     rc - New rectangle of the item.
  53. //-----------------------------------------------------------------------
  54. virtual CRect OnReposition(CRect rc);
  55. //-----------------------------------------------------------------------
  56. // Summary:
  57. //     This method is called to draw item in specified rectangle.
  58. // Parameters:
  59. //     pDC - Pointer to a valid device context
  60. //     rc  - Rectangle of item to draw.
  61. //-----------------------------------------------------------------------
  62. virtual void OnDrawItem(CDC* pDC, CRect rc);
  63. //-----------------------------------------------------------------------
  64. // Summary:
  65. //     Call this method to retrieve the margins of the item.
  66. // Returns:
  67. //     The margins of the item.
  68. //-----------------------------------------------------------------------
  69. CRect& GetMargins();
  70. //-----------------------------------------------------------------------
  71. // Summary:
  72. //     Retrieves rectangle of the item.
  73. // Returns:
  74. //     Rectangle of the item.
  75. //-----------------------------------------------------------------------
  76. CRect GetItemRect() const;
  77. //-----------------------------------------------------------------------
  78. // Summary:
  79. //     This method is called to set the bounding rectangle for the
  80. //     CXTPTaskPanelGroupItem.
  81. // Parameters:
  82. //     lpRect  - Rectangle of the item.
  83. //-----------------------------------------------------------------------
  84. void SetItemRect(LPCRECT lpRect);
  85. //-----------------------------------------------------------------------
  86. // Summary:
  87. //     Retrieves the parent group of the item.
  88. // Returns:
  89. //     Parent group of the item.
  90. //-----------------------------------------------------------------------
  91. CXTPTaskPanelGroup* GetItemGroup() const;
  92. //-----------------------------------------------------------------------
  93. // Summary:
  94. //     Call this method to set bold font for the item to be used.
  95. // Parameters:
  96. //     bBold - TRUE to use bold font.
  97. //-----------------------------------------------------------------------
  98. void SetBold(BOOL bBold = TRUE);
  99. //-----------------------------------------------------------------------
  100. // Summary:
  101. //     Call this member to retrieve if the font is bold.
  102. // Returns:
  103. //     TRUE is the font is bold, FALSE otherwise.
  104. //-----------------------------------------------------------------------
  105. BOOL IsBold() const;
  106. //-----------------------------------------------------------------------
  107. // Summary:
  108. //     This method attaches control handle to item.
  109. // Parameters:
  110. //     hWnd - Window handle to attach.
  111. //-----------------------------------------------------------------------
  112. void SetControlHandle(HWND hWnd);
  113. HWND GetControlHandle() const;
  114. //-----------------------------------------------------------------------
  115. // Summary:
  116. //     This method is called when an animation step is executed.
  117. // Parameters:
  118. //     nStep - Step of animation.
  119. //-----------------------------------------------------------------------
  120. void OnAnimate(int nStep);
  121. //-----------------------------------------------------------------------
  122. // Summary:
  123. //     Call this method to set the size of the item.
  124. // Parameters:
  125. //     szItem - Item size.
  126. //     bAutoHeight - TRUE to stretch control in group.
  127. // See Also: GetSize
  128. //-----------------------------------------------------------------------
  129. void SetSize(CSize szItem, BOOL bAutoHeight = FALSE);
  130. //-----------------------------------------------------------------------
  131. // Summary:
  132. //     Call this member to retrieve the backcolor of this item.
  133. // Returns:
  134. //     Backcolor of this item.
  135. //-----------------------------------------------------------------------
  136. COLORREF GetBackColor() const;
  137. //-----------------------------------------------------------------------
  138. // Summary:
  139. //     Call this member to get individual color for task panel item
  140. //-----------------------------------------------------------------------
  141. COLORREF GetTextColor() const;
  142. // ----------------------------------------------------------------
  143. // Summary:
  144. //     Call this member to set individual color for task panel item
  145. // Parameters:
  146. //     clrText - New text color to set
  147. // ----------------------------------------------------------------
  148. void SetTextColor(COLORREF clrText);
  149. //-----------------------------------------------------------------------
  150. // Summary:
  151. //     Call this member to retrieve the rectangle of the "tooltip zone"
  152. //     while the mouse is positioned over the group item.
  153. // Returns:
  154. //     The rectangle of the "tooltip zone" while the mouse is positioned
  155. //     over the group item.
  156. // Remarks:
  157. //     The "tooltip zone" is the area that a tooltip will be displayed
  158. //     while the mouse is positioned over the group item.
  159. // See Also:
  160. //     CXTPTaskPanelGroup::GetHitTestRect
  161. //-----------------------------------------------------------------------
  162. CRect GetHitTestRect() const;
  163. //-----------------------------------------------------------------------
  164. // Summary:
  165. //     Call this member to determine if the item is currently selected.
  166. //     Note that multiple items can be selected at one time, but only one
  167. //     can have focus.
  168. // Returns:
  169. //     TRUE if the item is currently selected.
  170. //-----------------------------------------------------------------------
  171. BOOL IsItemSelected() const;
  172. //-----------------------------------------------------------------------
  173. // Summary:
  174. //     Call this member to select this item.  Multiple items can have
  175. //     focus if CXTPTaskPanel::m_bSelectItemOnFocus is FALSE.
  176. // Parameters:
  177. //     bSelected - TRUE if the item will be selected, FALSE to no longer
  178. //                 select the item.
  179. //-----------------------------------------------------------------------
  180. void SetItemSelected(BOOL bSelected);
  181. //-----------------------------------------------------------------------
  182. // Summary:
  183. //     Reads or writes this object from or to an archive.
  184. // Parameters:
  185. //     pPX - A CXTPPropExchange object to serialize to or from.
  186. //----------------------------------------------------------------------
  187. virtual void DoPropExchange(CXTPPropExchange* pPX);
  188. //-----------------------------------------------------------------------
  189. // Summary:
  190. //     Call this method to set text representing item dragged out of control.
  191. // Parameters:
  192. //     lpszDragText - Dragged text of the item.
  193. //----------------------------------------------------------------------
  194. void SetDragText(LPCTSTR lpszDragText);
  195. //-----------------------------------------------------------------------
  196. // Summary:
  197. //     Call this method to get text representing item dragged out of control.
  198. // Returns:
  199. //     Text will be dragged out.
  200. // Remarks:
  201. //     You can override it to create dynamic text.
  202. //----------------------------------------------------------------------
  203. virtual CString GetDragText() const;
  204. //-----------------------------------------------------------------------
  205. // Summary:
  206. //     This member is called to cache a COleDataSource object that
  207. //     contains the group item being dragged.
  208. // Parameters:
  209. //     srcItem - COleDataSource object to cache.
  210. //     bCacheTextData - TRUE to cache text presentation of object.
  211. // Returns:
  212. //     TRUE if successful, FALSE if CacheGlobalData returns NULL.
  213. // Remarks:
  214. //     This places the item being dragged onto the clipboard.
  215. // See Also:
  216. //     CreateFromOleData, CacheGlobalData, CopyToClipboard,
  217. //     PasteFromClipboard, PrepareDrag
  218. //-----------------------------------------------------------------------
  219. BOOL PrepareDrag (COleDataSource& srcItem, BOOL bCacheTextData = TRUE);
  220. //-----------------------------------------------------------------------
  221. // Summary:
  222. //     Retrieves size of the item
  223. // Returns:
  224. //     Size of the item.
  225. // See Also: SetSize
  226. //-----------------------------------------------------------------------
  227. CSize GetSize() const;
  228. //-----------------------------------------------------------------------
  229. // Summary:
  230. //     Determines if the item is stretched inside its group.
  231. // Returns:
  232. //     TRUE if item fill whole group height; FALSE if it has defined height.
  233. //-----------------------------------------------------------------------
  234. BOOL IsAutoHeight() const;
  235. protected:
  236. //{{AFX_CODEJOCK_PRIVATE
  237. // System accessibility Support
  238. virtual HRESULT GetAccessibleDefaultAction(VARIANT varChild, BSTR* pszDefaultAction);
  239. virtual HRESULT AccessibleDoDefaultAction(VARIANT varChild);
  240. virtual HRESULT GetAccessibleState(VARIANT varChild, VARIANT* pvarState);
  241. virtual HRESULT AccessibleSelect(long flagsSelect, VARIANT varChild);
  242. //}}AFX_CODEJOCK_PRIVATE
  243. private:
  244. void GetPreviewBitmap(CWnd* pWnd, CBitmap& bmp);
  245. protected:
  246. CRect m_rcMargins;      // Item's margins.
  247. CRect m_rcItem;         // Rectangle of the item.
  248. BOOL m_bBold;           // TRUE to use bold font.
  249. BOOL m_bSelected;       // TRUE if the item is currently selected.
  250. HWND m_hWnd;            // Only used for items of type xtpTaskItemTypeControl, this is the control's child window
  251. CSize m_szItem;         // Size of item.  If size is set to 0, the size will be calculated by the task panel.
  252. CBitmap m_bmpPreview;   // Internally used.  This holds a screen shot of the attached Windows control when the item type is xtpTaskItemTypeControl.
  253.                         // This screen shot is used during group animation.  During animation, the Windows control is hidden and the screen shot of
  254.                         // the control is used in place of the actual control during the animation process.
  255. CSize m_szPreview;      // Last preview bitmap size
  256. CString m_strDragText;  // Drag text of the item.
  257. BOOL m_bAutoHeight;     // TRUE if item stretched inside its group.
  258. COLORREF m_clrText;     // Text color
  259. friend class CXTPTaskPanelGroup;
  260. };
  261. AFX_INLINE CRect& CXTPTaskPanelGroupItem::GetMargins() {
  262. return m_rcMargins;
  263. }
  264. AFX_INLINE CRect CXTPTaskPanelGroupItem::GetItemRect() const {
  265. return m_rcItem;
  266. }
  267. AFX_INLINE void CXTPTaskPanelGroupItem::SetItemRect(LPCRECT lpRect) {
  268. ::CopyRect(&m_rcItem, lpRect);
  269. }
  270. AFX_INLINE CSize CXTPTaskPanelGroupItem::GetSize() const {
  271. return m_szItem;
  272. }
  273. AFX_INLINE BOOL CXTPTaskPanelGroupItem::IsAutoHeight() const {
  274. return m_bAutoHeight;
  275. }
  276. AFX_INLINE COLORREF CXTPTaskPanelGroupItem::GetTextColor() const {
  277. return m_clrText;
  278. }
  279. AFX_INLINE void CXTPTaskPanelGroupItem::SetTextColor(COLORREF clr) {
  280. m_clrText = clr;
  281. RedrawPanel();
  282. }
  283. #endif // !defined(__XTPTASKPANELGROUPITEM_H__)