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

对话框与窗口

开发平台:

Visual C++

  1. //-----------------------------------------------------------------------
  2. // Summary:
  3. //     This method called to get bounding rectangle of item that was drawn
  4. // Parameters:
  5. //     pItem - Item to test
  6. // Returns: Bounding rectangle of drawing item
  7. // See Also: CXTPTabManagerItem::GetRect
  8. //-----------------------------------------------------------------------
  9. virtual CRect GetButtonDrawRect(const CXTPTabManagerItem* pItem);
  10. };
  11. //-------------------------------------------------------------------------
  12. // Summary:
  13. //     CAppearanceSetPropertyPageSelected is a CAppearanceSetPropertyPage derived
  14. //     class that represents the "Office 2000 Selected" tab appearance.
  15. // Remarks:
  16. //     To use the Office 2000 Selected appearance, SetAppearance is used to apply
  17. //     the xtpTabAppearancePropertyPageSelected XTPTabAppearanceStyle.
  18. //
  19. //     CAppearanceSetPropertyPageSelected supports the following XTPTabColorStyle:
  20. //     * <b>xtpTabColorDefault</b>    Default color style.
  21. //     * <b>xtpTabColorOffice2003</b> Office 2003 color style.
  22. //     * <b>xtpTabColorWinXP</b>      Windows XP color style.
  23. //
  24. // See Also: XTPTabColorStyle, XTPTabAppearanceStyle, SetAppearance, GetAppearance, GetAppearanceSet,
  25. //           SetColor, GetColor, GetColorSet, SetColorSet, SetAppearanceSet
  26. //-------------------------------------------------------------------------
  27. class _XTP_EXT_CLASS CAppearanceSetPropertyPageSelected : public CAppearanceSetPropertyPage
  28. {
  29. public:
  30. //-----------------------------------------------------------------------
  31. // Summary:
  32. //     This method is called to draw a single tab button in the tab
  33. //     client header area.
  34. // Parameters:
  35. //     pDC   - Pointer to a valid device context.
  36. //     pItem - Tab button to draw.
  37. // Remarks:
  38. //     This method will draw a single tab button.  This method only
  39. //     draws the button, no text or icon is added.
  40. //
  41. //     DrawSingleButton calls CXTPTabPaintManager::DrawSingleButtonIconAndText
  42. //     after the button is drawn.  This is called to draw the button's
  43. //     icon and text.
  44. //
  45. //     If the tab button is selected or highlighted then
  46. //     CXTPTabPaintManager::CAppearanceSetPropertyPageSelected::DrawSingleButton
  47. //     is called instead of CXTPTabPaintManager::DrawSingleButtonIconAndText.
  48. //
  49. // See Also:: CXTPTabPaintManager::DrawTabControlEx, CXTPTabPaintManager::DrawSingleButtonIconAndText
  50. //-----------------------------------------------------------------------
  51. virtual void DrawSingleButton(CDC* pDC, CXTPTabManagerItem* pItem);
  52. };
  53. //-------------------------------------------------------------------------
  54. // Summary:
  55. //     CAppearanceSetPropertyPage2003 is a CAppearanceSet derived
  56. //     class that represents the Office 2003 tab appearance.
  57. // Remarks:
  58. //     To use the Office 2003 appearance, SetAppearance is used to apply
  59. //     the xtpTabAppearancePropertyPage2003 XTPTabAppearanceStyle.
  60. //
  61. //     CAppearanceSetPropertyPage2003 supports the following XTPTabColorStyle:
  62. //     * <b>xtpTabColorDefault</b>    Default color style.
  63. //     * <b>xtpTabColorOffice2003</b> Office 2003 color style.
  64. //     * <b>xtpTabColorWhidbey</b>    Visual Studio 2005 "Whidbey" color style.
  65. //
  66. //     By default m_bDoubleHighlightedBorder is FALSE.  If TRUE then a double
  67. //     border is drawn on mouse over when hot tracking is enabled.
  68. //
  69. // See Also: XTPTabColorStyle, XTPTabAppearanceStyle, SetAppearance, GetAppearance, GetAppearanceSet,
  70. //           SetColor, GetColor, GetColorSet, SetColorSet, SetAppearanceSet
  71. //-------------------------------------------------------------------------
  72. class _XTP_EXT_CLASS CAppearanceSetPropertyPage2003 : public CAppearanceSet
  73. {
  74. public:
  75. //-------------------------------------------------------------------------
  76. // Summary:
  77. //     Constructs a CAppearanceSetPropertyPage2003 object.
  78. //-------------------------------------------------------------------------
  79. CAppearanceSetPropertyPage2003()
  80. {
  81. m_rcHeaderMargin.SetRect(2, 3, 6, 0);
  82. m_bDoubleHighlightedBorder = FALSE;
  83. }
  84. //-----------------------------------------------------------------------
  85. // Summary:
  86. //     This method is called to get the top, left, right, and bottom
  87. //     tab header margins.
  88. // Returns:
  89. //     CRect struct containing the left, top, right, and bottom margins
  90. //     of the tab header.  This is the margin (space) placed around the
  91. //     tab buttons inside the tab header.
  92. // Remarks:
  93. //     The CRect structure will contain the margins of the tab header.
  94. //     CXTPTabPaintManager::CAppearanceSet::m_rcHeaderMargin contains
  95. //     these margins.
  96. //
  97. // See Also: CXTPTabPaintManager::CAppearanceSet::m_rcHeaderMargin, CXTPTabPaintManager::GetHeaderRect
  98. //-----------------------------------------------------------------------
  99. virtual CRect GetHeaderMargin()
  100. {
  101. return CRect(m_rcHeaderMargin.left + m_nButtonHeight, m_rcHeaderMargin.top, m_rcHeaderMargin.right, m_rcHeaderMargin.bottom);
  102. }
  103. //-------------------------------------------------------------------------
  104. // Summary:
  105. //     This member is called to refresh the appearance metrics.
  106. // Remarks:
  107. //     This member is used to refresh the appearance metrics such
  108. //     as font, button height, margin size, etc.  Override this
  109. //     member to change the appearance metrics.
  110. // See Also: CXTPTabPaintManager::SetFontIndirect, GetHeaderMargin,
  111. //           CXTPTabPaintManager::CAppearanceSet::GetHeaderMargin::GetClientMargin,
  112. //           CXTPTabPaintManager::CAppearanceSet::GetHeaderMargin::GetButtonLength,
  113. //           CXTPTabPaintManager::CAppearanceSet::GetHeaderMargin::GetButtonHeight
  114. //-------------------------------------------------------------------------
  115. virtual void RefreshMetrics();
  116. //-----------------------------------------------------------------------
  117. // Summary:
  118. //     This method is called to draw a single tab button in the tab
  119. //     client header area.
  120. // Parameters:
  121. //     pDC   - Pointer to a valid device context.
  122. //     pItem - Tab button to draw.
  123. // Remarks:
  124. //     This method will draw a single tab button.  This method only
  125. //     draws the button, no text or icon is added.
  126. //
  127. //     DrawSingleButton calls CXTPTabPaintManager::DrawSingleButtonIconAndText
  128. //     after the button is drawn.  This is called to draw the button's
  129. //     icon and text.
  130. //
  131. //     If m_bDoubleHighlightedBorder = TRUE, then a double border
  132. //     is drawn on mouse over when hot tracking is enabled.
  133. //
  134. // See Also:: CXTPTabPaintManager::DrawTabControlEx, CXTPTabPaintManager::DrawSingleButtonIconAndText, m_bDoubleHighlightedBorder
  135. //-----------------------------------------------------------------------
  136. virtual void DrawSingleButton(CDC* pDC, CXTPTabManagerItem* pItem);
  137. //-----------------------------------------------------------------------
  138. // Summary:
  139. //     This member fills in the tab header and tab client area.  It
  140. //     will then draw tab client frame.
  141. // Parameters:
  142. //     pTabManager - Pointer to tab manager to fill.
  143. //     pDC         - Pointer to a valid device context.
  144. //     rcControl   - Bounding rectangle of the tab manager control.
  145. //                   See CXTPTabManager::GetControlRect.
  146. // Returns:
  147. //     Tab header bounding rectangle.  This value is returned from GetHeaderRect.
  148. // Remarks:
  149. //     If CXTPTabPaintManager::m_bFillBackground is TRUE, then the tab client
  150. //     space is filled using CXTPTabPaintManager::CColorSet::m_clrControlFace color.
  151. //     CXTPTabPaintManager::m_bFillBackground is only FALSE when drawing
  152. //     DockingPanePanel AutoHide tabs because there is no client area to draw.
  153. // See Also: CXTPTabPaintManager::CAppearanceSet::GetHeaderRect, CXTPTabPaintManager::m_bFillBackground, XTPTabClientFrame, CXTPTabPaintManager::m_clientFrame
  154. //-----------------------------------------------------------------------
  155. virtual CRect FillTabControl(CXTPTabManager* pTabManager, CDC* pDC, CRect rcControl);
  156. //-----------------------------------------------------------------------
  157. // Summary:
  158. //     Call this member to retrieve all the supported XTPTabColorStyle
  159. //     for this appearance.
  160. // Returns:
  161. //     xtpTabColorDefault | xtpTabColorOffice2003 | xtpTabColorWhidbey
  162. // See Also: GetDefaultColorSet
  163. //-----------------------------------------------------------------------
  164. virtual int GetSupportedColorSets() { return xtpTabColorDefault | xtpTabColorOffice2003 | xtpTabColorWhidbey | xtpTabColorVisualStudio2008; }
  165. //-----------------------------------------------------------------------
  166. // Summary:
  167. //     Call this member to get the default XTPTabColorStyle for this appearance.
  168. // Returns:
  169. //     xtpTabColorOffice2003
  170. // See Also: GetSupportedColorSets
  171. //-----------------------------------------------------------------------
  172. virtual XTPTabColorStyle GetDefaultColorSet() { return xtpTabColorOffice2003; }
  173. //-----------------------------------------------------------------------
  174. // Summary:
  175. //     This method called to get bounding rectangle of item that was drawn
  176. // Parameters:
  177. //     pItem - Item to test
  178. // Returns: Bounding rectangle of drawing item
  179. // See Also: CXTPTabManagerItem::GetRect
  180. //-----------------------------------------------------------------------
  181. virtual CRect GetButtonDrawRect(const CXTPTabManagerItem* pItem);
  182. public:
  183. BOOL m_bDoubleHighlightedBorder;    // TRUE to draw a double border on mouse over when hot tracking is enabled.
  184. };
  185. //-------------------------------------------------------------------------
  186. // Summary:
  187. //     CAppearanceSetPropertyPage2007 is a CAppearanceSet derived
  188. //     class that represents the Office 2007 tab appearance.
  189. // Remarks:
  190. //     To use the Office 2007 appearance, SetAppearance is used to apply
  191. //     the xtpTabAppearancePropertyPage2007 XTPTabAppearanceStyle.
  192. //
  193. // See Also: XTPTabColorStyle, XTPTabAppearanceStyle, SetAppearance, GetAppearance, GetAppearanceSet,
  194. //           SetColor, GetColor, GetColorSet, SetColorSet, SetAppearanceSet
  195. //-------------------------------------------------------------------------
  196. class _XTP_EXT_CLASS CAppearanceSetPropertyPage2007 : public CAppearanceSet
  197. {
  198. public:
  199. //-------------------------------------------------------------------------
  200. // Summary:
  201. //     Constructs a CAppearanceSetPropertyPage2003 object.
  202. //-------------------------------------------------------------------------
  203. CAppearanceSetPropertyPage2007()
  204. {
  205. m_rcHeaderMargin.SetRect(4, 1, 0, 0);
  206. }
  207. protected:
  208. //-------------------------------------------------------------------------
  209. // Summary:
  210. //     This member is called to refresh the appearance metrics.
  211. // Remarks:
  212. //     This member is used to refresh the appearance metrics such
  213. //     as font, button height, margin size, etc.  Override this
  214. //     member to change the appearance metrics.
  215. // See Also: CXTPTabPaintManager::SetFontIndirect, GetHeaderMargin,
  216. //           CXTPTabPaintManager::CAppearanceSet::GetHeaderMargin::GetClientMargin,
  217. //           CXTPTabPaintManager::CAppearanceSet::GetHeaderMargin::GetButtonLength,
  218. //           CXTPTabPaintManager::CAppearanceSet::GetHeaderMargin::GetButtonHeight
  219. //-------------------------------------------------------------------------
  220. virtual void RefreshMetrics();
  221. //-----------------------------------------------------------------------
  222. // Summary:
  223. //     This method is called to draw a single tab button in the tab
  224. //     client header area.
  225. // Parameters:
  226. //     pDC   - Pointer to a valid device context.
  227. //     pItem - Tab button to draw.
  228. // Remarks:
  229. //     This method will draw a single tab button.  This method only
  230. //     draws the button, no text or icon is added.
  231. //
  232. //     DrawSingleButton calls CXTPTabPaintManager::DrawSingleButtonIconAndText
  233. //     after the button is drawn.  This is called to draw the button's
  234. //     icon and text.
  235. //
  236. //     If m_bDoubleHighlightedBorder = TRUE, then a double border
  237. //     is drawn on mouse over when hot tracking is enabled.
  238. //
  239. // See Also:: CXTPTabPaintManager::DrawTabControlEx, CXTPTabPaintManager::DrawSingleButtonIconAndText, m_bDoubleHighlightedBorder
  240. //-----------------------------------------------------------------------
  241. virtual void DrawSingleButton(CDC* pDC, CXTPTabManagerItem* pItem);
  242. //-----------------------------------------------------------------------
  243. // Summary:
  244. //     This member fills in the tab header and tab client area.  It
  245. //     will then draw tab client frame.
  246. // Parameters:
  247. //     pTabManager - Pointer to tab manager to fill.
  248. //     pDC         - Pointer to a valid device context.
  249. //     rcControl   - Bounding rectangle of the tab manager control.
  250. //                   See CXTPTabManager::GetControlRect.
  251. // Returns:
  252. //     Tab header bounding rectangle.  This value is returned from GetHeaderRect.
  253. // Remarks:
  254. //     If CXTPTabPaintManager::m_bFillBackground is TRUE, then the tab client
  255. //     space is filled using CXTPTabPaintManager::CColorSet::m_clrControlFace color.
  256. //     CXTPTabPaintManager::m_bFillBackground is only FALSE when drawing
  257. //     DockingPanePanel AutoHide tabs because there is no client area to draw.
  258. // See Also: CXTPTabPaintManager::CAppearanceSet::GetHeaderRect, CXTPTabPaintManager::m_bFillBackground, XTPTabClientFrame, CXTPTabPaintManager::m_clientFrame
  259. //-----------------------------------------------------------------------
  260. virtual CRect FillTabControl(CXTPTabManager* pTabManager, CDC* pDC, CRect rcControl);
  261. //-----------------------------------------------------------------------
  262. // Summary:
  263. //     Call this member to retrieve all the supported XTPTabColorStyle
  264. //     for this appearance.
  265. // Returns:
  266. //     xtpTabColorDefault | xtpTabColorOffice2003 | xtpTabColorWhidbey
  267. // See Also: GetDefaultColorSet
  268. //-----------------------------------------------------------------------
  269. virtual int GetSupportedColorSets() { return xtpTabColorOffice2007; }
  270. //-----------------------------------------------------------------------
  271. // Summary:
  272. //     Call this member to get the default XTPTabColorStyle for this appearance.
  273. // Returns:
  274. //     xtpTabColorOffice2003
  275. // See Also: GetSupportedColorSets
  276. //-----------------------------------------------------------------------
  277. virtual XTPTabColorStyle GetDefaultColorSet() { return xtpTabColorOffice2007; }
  278. protected:
  279. typedef void (AFX_CDECL* LPFNDRAWROTATEDBITS)(int cx, int cy, UINT* pSrcBits, UINT* pDestBits);
  280. protected:
  281. void DrawRotatedButton(CDC* pDC, CRect rcItem, CXTPTabManagerItem* pItem, BOOL bSwap, LPFNDRAWROTATEDBITS pfnRotatedProcBack, LPFNDRAWROTATEDBITS pfnRotatedProc);
  282. virtual void DrawButtonBackground(CDC* pDC, CXTPTabManagerItem* pItem, CRect rc);
  283. };
  284. //-------------------------------------------------------------------------
  285. // Summary:
  286. //     CAppearanceSetPropertyPageAccess2007 is a CAppearanceSet derived
  287. //     class that represents the Office 2007 tab appearance.
  288. // Remarks:
  289. //     To use the Office 2007 appearance, SetAppearance is used to apply
  290. //     the xtpTabAppearancePropertyPage2007 XTPTabAppearanceStyle.
  291. //
  292. // See Also: XTPTabColorStyle, XTPTabAppearanceStyle, SetAppearance, GetAppearance, GetAppearanceSet,
  293. //           SetColor, GetColor, GetColorSet, SetColorSet, SetAppearanceSet
  294. //-------------------------------------------------------------------------
  295. class _XTP_EXT_CLASS CAppearanceSetPropertyPageAccess2007 : public CAppearanceSetPropertyPage2007
  296. {
  297. public:
  298. //-------------------------------------------------------------------------
  299. // Summary:
  300. //     Constructs a CAppearanceSetPropertyPageAccess2007 object.
  301. //-------------------------------------------------------------------------
  302. CAppearanceSetPropertyPageAccess2007()
  303. {
  304. m_rcHeaderMargin.SetRect(4, 1, 0, 0);
  305. }
  306. protected:
  307. //-------------------------------------------------------------------------
  308. // Summary:
  309. //     This member is called to refresh the appearance metrics.
  310. // Remarks:
  311. //     This member is used to refresh the appearance metrics such
  312. //     as font, button height, margin size, etc.  Override this
  313. //     member to change the appearance metrics.
  314. // See Also: CXTPTabPaintManager::SetFontIndirect, GetHeaderMargin,
  315. //           CXTPTabPaintManager::CAppearanceSet::GetHeaderMargin::GetClientMargin,
  316. //           CXTPTabPaintManager::CAppearanceSet::GetHeaderMargin::GetButtonLength,
  317. //           CXTPTabPaintManager::CAppearanceSet::GetHeaderMargin::GetButtonHeight
  318. //-------------------------------------------------------------------------
  319. virtual void RefreshMetrics();
  320. //-----------------------------------------------------------------------
  321. // Summary:
  322. //     This method is called to draw a single tab button in the tab
  323. //     client header area.
  324. // Parameters:
  325. //     pDC   - Pointer to a valid device context.
  326. //     pItem - Tab button to draw.
  327. // Remarks:
  328. //     This method will draw a single tab button.  This method only
  329. //     draws the button, no text or icon is added.
  330. //
  331. //     DrawSingleButton calls CXTPTabPaintManager::DrawSingleButtonIconAndText
  332. //     after the button is drawn.  This is called to draw the button's
  333. //     icon and text.
  334. //
  335. //     If m_bDoubleHighlightedBorder = TRUE, then a double border
  336. //     is drawn on mouse over when hot tracking is enabled.
  337. //
  338. // See Also:: CXTPTabPaintManager::DrawTabControlEx, CXTPTabPaintManager::DrawSingleButtonIconAndText, m_bDoubleHighlightedBorder
  339. //-----------------------------------------------------------------------
  340. virtual void DrawSingleButton(CDC* pDC, CXTPTabManagerItem* pItem);
  341. //-----------------------------------------------------------------------
  342. // Summary:
  343. //     This member fills in the tab header and tab client area.  It
  344. //     will then draw tab client frame.
  345. // Parameters:
  346. //     pTabManager - Pointer to tab manager to fill.
  347. //     pDC         - Pointer to a valid device context.
  348. //     rcControl   - Bounding rectangle of the tab manager control.
  349. //                   See CXTPTabManager::GetControlRect.
  350. // Returns:
  351. //     Tab header bounding rectangle.  This value is returned from GetHeaderRect.
  352. // Remarks:
  353. //     If CXTPTabPaintManager::m_bFillBackground is TRUE, then the tab client
  354. //     space is filled using CXTPTabPaintManager::CColorSet::m_clrControlFace color.
  355. //     CXTPTabPaintManager::m_bFillBackground is only FALSE when drawing
  356. //     DockingPanePanel AutoHide tabs because there is no client area to draw.
  357. // See Also: CXTPTabPaintManager::CAppearanceSet::GetHeaderRect, CXTPTabPaintManager::m_bFillBackground, XTPTabClientFrame, CXTPTabPaintManager::m_clientFrame
  358. //-----------------------------------------------------------------------
  359. virtual CRect FillTabControl(CXTPTabManager* pTabManager, CDC* pDC, CRect rcControl);
  360. //-----------------------------------------------------------------------
  361. // Summary:
  362. //     Call this member to retrieve all the supported XTPTabColorStyle
  363. //     for this appearance.
  364. // Returns:
  365. //     xtpTabColorDefault | xtpTabColorOffice2003 | xtpTabColorWhidbey
  366. // See Also: GetDefaultColorSet
  367. //-----------------------------------------------------------------------
  368. virtual int GetSupportedColorSets() { return xtpTabColorAccess2007; }
  369. //-----------------------------------------------------------------------
  370. // Summary:
  371. //     Call this member to get the default XTPTabColorStyle for this appearance.
  372. // Returns:
  373. //     xtpTabColorOffice2003
  374. // See Also: GetSupportedColorSets
  375. //-----------------------------------------------------------------------
  376. virtual XTPTabColorStyle GetDefaultColorSet() { return xtpTabColorAccess2007; }
  377. CRect GetButtonDrawRect(const CXTPTabManagerItem* pItem);
  378. private:
  379. void DrawButtonBackground(CDC* pDC, CXTPTabManagerItem* pItem, CRect rc);
  380. };
  381. //-------------------------------------------------------------------------
  382. // Summary:
  383. //     CAppearanceSetStateButtons is a CAppearanceSet derived
  384. //     class that represents the "State Button" tab appearance.
  385. // Remarks:
  386. //     To use the "State Button" appearance, SetAppearance is used to apply
  387. //     the xtpTabAppearanceStateButtons XTPTabAppearanceStyle.
  388. //
  389. //     CAppearanceSetStateButtons supports the following XTPTabColorStyle:
  390. //     * <b>xtpTabColorDefault</b>      Default color style.
  391. //     * <b>xtpTabColorVisualStudio</b> Visual Studio color style.
  392. //     * <b>xtpTabColorOffice2003</b>   Office 2003 color style.
  393. //     * <b>xtpTabColorWinXP</b>        Windows XP color style.
  394. //     * <b>xtpTabColorWhidbey</b>      Visual Studio 2005 "Whidbey" color style.
  395. //
  396. // See Also: XTPTabColorStyle, XTPTabAppearanceStyle, SetAppearance, GetAppearance, GetAppearanceSet,
  397. //           SetColor, GetColor, GetColorSet, SetColorSet, SetAppearanceSet
  398. //-------------------------------------------------------------------------
  399. class _XTP_EXT_CLASS CAppearanceSetStateButtons : public CAppearanceSet
  400. {
  401. public:
  402. //-------------------------------------------------------------------------
  403. // Summary:
  404. //     Constructs a CAppearanceSetStateButtons object.
  405. //-------------------------------------------------------------------------
  406. CAppearanceSetStateButtons()
  407. {
  408. m_rcHeaderMargin.SetRect(2, 2, 4, 2);
  409. m_nRowMargin = 0;
  410. }
  411. //-----------------------------------------------------------------------
  412. // Summary:
  413. //     This method is called to draw a single tab button in the tab
  414. //     client header area.
  415. // Parameters:
  416. //     pDC   - Pointer to a valid device context.
  417. //     pItem - Tab button to draw.
  418. // Remarks:
  419. //     This method will draw a single tab button.  This method only
  420. //     draws the button, no text or icon is added.
  421. //
  422. //     DrawSingleButton calls CXTPTabPaintManager::DrawSingleButtonIconAndText
  423. //     after the button is drawn.  This is called to draw the button's
  424. //     icon and text.
  425. // See Also:: CXTPTabPaintManager::DrawTabControlEx, CXTPTabPaintManager::DrawSingleButtonIconAndText
  426. //-----------------------------------------------------------------------
  427. virtual void DrawSingleButton(CDC* pDC, CXTPTabManagerItem* pItem);
  428. //-----------------------------------------------------------------------
  429. // Summary:
  430. //     This member fills in the tab header and tab client area.  It
  431. //     will then draw tab client frame.
  432. // Parameters:
  433. //     pTabManager - Pointer to tab manager to fill.
  434. //     pDC         - Pointer to a valid device context.
  435. //     rcControl   - Bounding rectangle of the tab manager control.
  436. //                   See CXTPTabManager::GetControlRect.
  437. // Returns:
  438. //     Tab header bounding rectangle.  This value is returned from GetHeaderRect.
  439. // Remarks:
  440. //     If CXTPTabPaintManager::m_bFillBackground is TRUE, then the tab client
  441. //     space is filled using CXTPTabPaintManager::CColorSet::m_clrControlFace color.
  442. //     CXTPTabPaintManager::m_bFillBackground is only FALSE when drawing
  443. //     DockingPanePanel AutoHide tabs because there is no client area to draw.
  444. // See Also: CXTPTabPaintManager::CAppearanceSet::GetHeaderRect, CXTPTabPaintManager::m_bFillBackground, XTPTabClientFrame, CXTPTabPaintManager::m_clientFrame
  445. //-----------------------------------------------------------------------
  446. virtual CRect FillTabControl(CXTPTabManager* pTabManager, CDC* pDC, CRect rcControl);
  447. //-----------------------------------------------------------------------
  448. // Summary:
  449. //     Call this member to get the default XTPTabColorStyle for this appearance.
  450. // Returns:
  451. //     xtpTabColorVisualStudio
  452. // See Also: GetSupportedColorSets
  453. //-----------------------------------------------------------------------
  454. virtual XTPTabColorStyle GetDefaultColorSet() { return xtpTabColorVisualStudio; }
  455. };
  456. //-------------------------------------------------------------------------
  457. // Summary:
  458. //     CAppearanceSetVisualStudio is a CAppearanceSet derived
  459. //     class that represents the Visual Studio tab appearance.
  460. // Remarks:
  461. //     To use the Visual Studio appearance, SetAppearance is used to apply
  462. //     the xtpTabAppearanceVisualStudio XTPTabAppearanceStyle.
  463. //
  464. //     CAppearanceSetVisualStudio supports the following XTPTabColorStyle:
  465. //     * <b>xtpTabColorDefault</b>      Default color style.
  466. //     * <b>xtpTabColorVisualStudio</b> Visual Studio color style.
  467. //     * <b>xtpTabColorOffice2003</b>   Office 2003 color style.
  468. //     * <b>xtpTabColorWinXP</b>        Windows XP color style.
  469. //     * <b>xtpTabColorWhidbey</b>      Visual Studio 2005 "Whidbey" color style.
  470. //
  471. // See Also: XTPTabColorStyle, XTPTabAppearanceStyle, SetAppearance, GetAppearance, GetAppearanceSet,
  472. //           SetColor, GetColor, GetColorSet, SetColorSet, SetAppearanceSet
  473. //-------------------------------------------------------------------------
  474. class _XTP_EXT_CLASS CAppearanceSetVisualStudio : public CAppearanceSet
  475. {
  476. public:
  477. //-------------------------------------------------------------------------
  478. // Summary:
  479. //     Constructs a CAppearanceSetVisualStudio object.
  480. //-------------------------------------------------------------------------
  481. CAppearanceSetVisualStudio()
  482. {
  483. m_rcHeaderMargin.SetRect(4, 2, 4, 0);
  484. }
  485. //-----------------------------------------------------------------------
  486. // Summary:
  487. //     This method is called to draw a single tab button in the tab
  488. //     client header area.
  489. // Parameters:
  490. //     pDC   - Pointer to a valid device context.
  491. //     pItem - Tab button to draw.
  492. // Remarks:
  493. //     This method will draw a single tab button.  This method only
  494. //     draws the button, no text or icon is added.
  495. //
  496. //     DrawSingleButton calls CXTPTabPaintManager::DrawSingleButtonIconAndText
  497. //     after the button is drawn.  This is called to draw the button's
  498. //     icon and text.
  499. // See Also:: CXTPTabPaintManager::DrawTabControlEx, CXTPTabPaintManager::DrawSingleButtonIconAndText
  500. //-----------------------------------------------------------------------
  501. virtual void DrawSingleButton(CDC* pDC, CXTPTabManagerItem* pItem);
  502. //-----------------------------------------------------------------------
  503. // Summary:
  504. //     This member fills in the tab header and tab client area.  It
  505. //     will then draw tab client frame.
  506. // Parameters:
  507. //     pTabManager - Pointer to tab manager to fill.
  508. //     pDC         - Pointer to a valid device context.
  509. //     rcControl   - Bounding rectangle of the tab manager control.
  510. //                   See CXTPTabManager::GetControlRect.
  511. // Returns:
  512. //     Tab header bounding rectangle.  This value is returned from GetHeaderRect.
  513. // Remarks:
  514. //     If CXTPTabPaintManager::m_bFillBackground is TRUE, then the tab client
  515. //     space is filled using CXTPTabPaintManager::CColorSet::m_clrControlFace color.
  516. //     CXTPTabPaintManager::m_bFillBackground is only FALSE when drawing
  517. //     DockingPanePanel AutoHide tabs because there is no client area to draw.
  518. // See Also: CXTPTabPaintManager::CAppearanceSet::GetHeaderRect, CXTPTabPaintManager::m_bFillBackground, XTPTabClientFrame, CXTPTabPaintManager::m_clientFrame
  519. //-----------------------------------------------------------------------
  520. virtual CRect FillTabControl(CXTPTabManager* pTabManager, CDC* pDC, CRect rcControl);
  521. //-----------------------------------------------------------------------
  522. // Summary:
  523. //     Call this member to retrieve all the supported XTPTabColorStyle
  524. //     for this appearance.
  525. // Returns:
  526. //     xtpTabColorDefault |xtpTabColorVisualStudio | xtpTabColorOffice2003
  527. // See Also: GetDefaultColorSet
  528. //-----------------------------------------------------------------------
  529. virtual int GetSupportedColorSets() { return xtpTabColorDefault | xtpTabColorVisualStudio | xtpTabColorOffice2003; }
  530. //-----------------------------------------------------------------------
  531. // Summary:
  532. //     Call this member to get the default XTPTabColorStyle for this appearance.
  533. // Returns:
  534. //     xtpTabColorVisualStudio
  535. // See Also: GetSupportedColorSets
  536. //-----------------------------------------------------------------------
  537. virtual XTPTabColorStyle GetDefaultColorSet() { return xtpTabColorVisualStudio; }
  538. };
  539. //-------------------------------------------------------------------------
  540. // Summary:
  541. //     CAppearanceSetVisualStudio2005 is a CAppearanceSetPropertyPage2003 derived
  542. //     class that represents the Visual Studio 2005 tab appearance.
  543. // Remarks:
  544. //     To use the Visual Studio appearance, SetAppearance is used to apply
  545. //     the xtpTabAppearanceVisualStudio2005 XTPTabAppearanceStyle.
  546. //
  547. // See Also: XTPTabColorStyle, XTPTabAppearanceStyle, SetAppearance, GetAppearance, GetAppearanceSet,
  548. //           SetColor, GetColor, GetColorSet, SetColorSet, SetAppearanceSet
  549. //-------------------------------------------------------------------------
  550. class _XTP_EXT_CLASS CAppearanceSetVisualStudio2005 : public CAppearanceSetPropertyPage2003
  551. {
  552. public:
  553. //-------------------------------------------------------------------------
  554. // Summary:
  555. //     Constructs a CAppearanceSetVisualStudio2005 object.
  556. //-------------------------------------------------------------------------
  557. CAppearanceSetVisualStudio2005()
  558. {
  559. m_bButtonsReverseZOrder = TRUE;
  560. }
  561. //-----------------------------------------------------------------------
  562. // Summary:
  563. //     This method is called to draw a single tab button in the tab
  564. //     client header area.
  565. // Parameters:
  566. //     pDC   - Pointer to a valid device context.
  567. //     pItem - Tab button to draw.
  568. // Remarks:
  569. //     This method will draw a single tab button.  This method only
  570. //     draws the button, no text or icon is added.
  571. //
  572. //     DrawSingleButton calls CXTPTabPaintManager::DrawSingleButtonIconAndText
  573. //     after the button is drawn.  This is called to draw the button's
  574. //     icon and text.
  575. // See Also:: CXTPTabPaintManager::DrawTabControlEx, CXTPTabPaintManager::DrawSingleButtonIconAndText
  576. //-----------------------------------------------------------------------
  577. virtual void DrawSingleButton(CDC* pDC, CXTPTabManagerItem* pItem);
  578. //-----------------------------------------------------------------------
  579. // Summary:
  580. //     This method is called to get the top, left, right, and bottom
  581. //     tab header margins.
  582. // Returns:
  583. //     CRect struct containing the left, top, right, and bottom margins
  584. //     of the tab header.  This is the margin (space) placed around the
  585. //     tab buttons inside the tab header.
  586. // Remarks:
  587. //     The CRect structure will contain the margins of the tab header.
  588. //     CXTPTabPaintManager::CAppearanceSet::m_rcHeaderMargin contains
  589. //     these margins.
  590. //
  591. // See Also: CXTPTabPaintManager::CAppearanceSet::m_rcHeaderMargin, CXTPTabPaintManager::GetHeaderRect
  592. //-----------------------------------------------------------------------
  593. virtual CRect GetHeaderMargin()
  594. {
  595. return CRect(m_rcHeaderMargin.left + m_nButtonHeight / 2, m_rcHeaderMargin.top, m_rcHeaderMargin.right, m_rcHeaderMargin.bottom);
  596. }
  597. //-----------------------------------------------------------------------
  598. // Summary:
  599. //     This method called to get bounding rectangle of item that was drawn
  600. // Parameters:
  601. //     pItem - Item to test
  602. // Returns: Bounding rectangle of drawing item
  603. // See Also: CXTPTabManagerItem::GetRect
  604. //-----------------------------------------------------------------------
  605. virtual CRect GetButtonDrawRect(const CXTPTabManagerItem* pItem);
  606. };
  607. //-------------------------------------------------------------------------
  608. // Summary:
  609. //     CAppearanceSetFlat is a CAppearanceSet derived
  610. //     class that represents the "Flat" tab appearance.
  611. // Remarks:
  612. //     To use the Flat appearance, SetAppearance is used to apply
  613. //     the xtpTabAppearanceFlat XTPTabAppearanceStyle.
  614. //
  615. //     CAppearanceSetFlat supports the following XTPTabColorStyle:
  616. //     * <b>xtpTabColorDefault</b>      Default color style.
  617. //     * <b>xtpTabColorVisualStudio</b> Visual Studio color style.
  618. //     * <b>xtpTabColorOffice2003</b>   Office 2003 color style.
  619. //
  620. // See Also: XTPTabColorStyle, XTPTabAppearanceStyle, SetAppearance, GetAppearance, GetAppearanceSet,
  621. //           SetColor, GetColor, GetColorSet, SetColorSet, SetAppearanceSet
  622. //-------------------------------------------------------------------------
  623. class _XTP_EXT_CLASS CAppearanceSetFlat : public CAppearanceSet
  624. {
  625. public:
  626. //-------------------------------------------------------------------------
  627. // Summary:
  628. //     Constructs a CAppearanceSetFlat object.
  629. //-------------------------------------------------------------------------
  630. CAppearanceSetFlat()
  631. {
  632. m_rcHeaderMargin.SetRect(2, 2, 4, 0);
  633. }
  634. //-----------------------------------------------------------------------
  635. // Summary:
  636. //     This method is called to draw a single tab button in the tab
  637. //     client header area.
  638. // Parameters:
  639. //     pDC   - Pointer to a valid device context.
  640. //     pItem - Tab button to draw.
  641. // Remarks:
  642. //     This method will draw a single tab button.  This method only
  643. //     draws the button, no text or icon is added.
  644. //
  645. //     DrawSingleButton calls CXTPTabPaintManager::DrawSingleButtonIconAndText
  646. //     after the button is drawn.  This is called to draw the button's
  647. //     icon and text.
  648. // See Also:: CXTPTabPaintManager::DrawTabControlEx, CXTPTabPaintManager::DrawSingleButtonIconAndText
  649. //-----------------------------------------------------------------------
  650. virtual void DrawSingleButton(CDC* pDC, CXTPTabManagerItem* pItem);
  651. //-----------------------------------------------------------------------
  652. // Summary:
  653. //     This member fills in the tab header and tab client area.  It
  654. //     will then draw tab client frame.
  655. // Parameters:
  656. //     pTabManager - Pointer to tab manager to fill.
  657. //     pDC         - Pointer to a valid device context.
  658. //     rcControl   - Bounding rectangle of the tab manager control.
  659. //                   See CXTPTabManager::GetControlRect.
  660. // Returns:
  661. //     Tab header bounding rectangle.  This value is returned from GetHeaderRect.
  662. // Remarks:
  663. //     If CXTPTabPaintManager::m_bFillBackground is TRUE, then the tab client
  664. //     space is filled using CXTPTabPaintManager::CColorSet::m_clrControlFace color.
  665. //     CXTPTabPaintManager::m_bFillBackground is only FALSE when drawing
  666. //     DockingPanePanel AutoHide tabs because there is no client area to draw.
  667. // See Also: CXTPTabPaintManager::CAppearanceSet::GetHeaderRect, CXTPTabPaintManager::m_bFillBackground, XTPTabClientFrame, CXTPTabPaintManager::m_clientFrame
  668. //-----------------------------------------------------------------------
  669. virtual CRect FillTabControl(CXTPTabManager* pTabManager, CDC* pDC, CRect rcControl);
  670. //-----------------------------------------------------------------------
  671. // Summary:
  672. //     Call this member to retrieve all the supported XTPTabColorStyle
  673. //     for this appearance.
  674. // Returns:
  675. //     xtpTabColorDefault |xtpTabColorVisualStudio | xtpTabColorOffice2003
  676. // See Also: GetDefaultColorSet
  677. //-----------------------------------------------------------------------
  678. virtual int GetSupportedColorSets() { return xtpTabColorDefault |xtpTabColorVisualStudio | xtpTabColorOffice2003; }
  679. //-----------------------------------------------------------------------
  680. // Summary:
  681. //     Call this member to get the default XTPTabColorStyle for this appearance.
  682. // Returns:
  683. //     xtpTabColorVisualStudio
  684. // See Also: GetSupportedColorSets
  685. //-----------------------------------------------------------------------
  686. virtual XTPTabColorStyle GetDefaultColorSet() { return xtpTabColorVisualStudio; }
  687. };
  688. //-------------------------------------------------------------------------
  689. // Summary:
  690. //     CAppearanceSetPropertyPageFlat is a CAppearanceSetFlat derived
  691. //     class that represents the Office 2000 Flat tab appearance.
  692. // Remarks:
  693. //     To use the Office 2000 Flat appearance, SetAppearance is used to apply
  694. //     the xtpTabAppearancePropertyPageFlat XTPTabAppearanceStyle.
  695. //
  696. //     CAppearanceSetPropertyPageSelected supports the following XTPTabColorStyle:
  697. //     * <b>xtpTabColorDefault</b>      Default color style.
  698. //     * <b>xtpTabColorVisualStudio</b> Visual Studio color style.
  699. //     * <b>xtpTabColorOffice2003</b>   Office 2003 color style.
  700. //
  701. // See Also: XTPTabColorStyle, XTPTabAppearanceStyle, SetAppearance, GetAppearance, GetAppearanceSet,
  702. //           SetColor, GetColor, GetColorSet, SetColorSet, SetAppearanceSet
  703. //-------------------------------------------------------------------------
  704. class _XTP_EXT_CLASS CAppearanceSetPropertyPageFlat : public CAppearanceSetFlat
  705. {
  706. public:
  707. //-------------------------------------------------------------------------
  708. // Summary:
  709. //     Constructs a CAppearanceSetPropertyPageFlat object.
  710. // Remarks:
  711. //     By default, m_bBlurPoints is TRUE.  This will smooth the edges
  712. //     of the tabs.
  713. //-------------------------------------------------------------------------
  714. CAppearanceSetPropertyPageFlat()
  715. {
  716. m_bBlurPoints = TRUE;
  717. m_bVisualStudio2005Style = FALSE;
  718. }
  719. //-----------------------------------------------------------------------
  720. // Summary:
  721. //     This method is called to draw a single tab button in the tab
  722. //     client header area.
  723. // Parameters:
  724. //     pDC   - Pointer to a valid device context.
  725. //     pItem - Tab button to draw.
  726. // Remarks:
  727. //     This method will draw a single tab button.  This method only
  728. //     draws the button, no text or icon is added.
  729. //
  730. //     DrawSingleButton calls CXTPTabPaintManager::DrawSingleButtonIconAndText
  731. //     after the button is drawn.  This is called to draw the button's
  732. //     icon and text.
  733. //
  734. //     If m_bBlurPoints is TRUE, then the corners of the tabs will be
  735. //     smoothed.
  736. //
  737. // See Also:: CXTPTabPaintManager::DrawTabControlEx, CXTPTabPaintManager::DrawSingleButtonIconAndText, m_bBlurPoints
  738. //-----------------------------------------------------------------------
  739. virtual void DrawSingleButton(CDC* pDC, CXTPTabManagerItem* pItem);
  740. //-----------------------------------------------------------------------
  741. // Summary:
  742. //     Call this member to get the default XTPTabColorStyle for this appearance.
  743. // Returns:
  744. //     xtpTabColorDefault
  745. // See Also: GetSupportedColorSets
  746. //-----------------------------------------------------------------------
  747. virtual XTPTabColorStyle GetDefaultColorSet() { return xtpTabColorDefault; }
  748. public:
  749. BOOL m_bBlurPoints;         // TRUE to smooth corners of flat tabs.
  750. BOOL m_bVisualStudio2005Style;  // TRUE to draw with Visual Studio 2005 style
  751. };
  752. //-------------------------------------------------------------------------
  753. // Summary:
  754. //     CAppearanceSetExcel is a CAppearanceSetFlat derived
  755. //     class that represents the Excel tab appearance.
  756. // Remarks:
  757. //     To use the Excel appearance, SetAppearance is used to apply
  758. //     the xtpTabAppearanceExcel XTPTabAppearanceStyle.
  759. //
  760. //     CAppearanceSetExcel supports the following XTPTabColorStyle:
  761. //     * <b>xtpTabColorDefault</b>      Default color style.
  762. //     * <b>xtpTabColorVisualStudio</b> Visual Studio color style.
  763. //     * <b>xtpTabColorOffice2003</b>   Office 2003 color style.
  764. //
  765. // See Also: XTPTabColorStyle, XTPTabAppearanceStyle, SetAppearance, GetAppearance, GetAppearanceSet,
  766. //           SetColor, GetColor, GetColorSet, SetColorSet, SetAppearanceSet
  767. //-------------------------------------------------------------------------
  768. class _XTP_EXT_CLASS CAppearanceSetExcel : public CAppearanceSetFlat
  769. {
  770. public:
  771. //-------------------------------------------------------------------------
  772. // Summary:
  773. //     Constructs a CAppearanceSetExcel object.
  774. //-------------------------------------------------------------------------
  775. CAppearanceSetExcel()
  776. {
  777. m_rcHeaderMargin.SetRect(2, 3, 2, 0);
  778. }
  779. //-----------------------------------------------------------------------
  780. // Summary:
  781. //     This method is called to get the top, left, right, and bottom
  782. //     tab header margins.
  783. // Returns:
  784. //     CRect struct containing the left, top, right, and bottom margins
  785. //     of the tab header.  This is the margin (space) placed around the
  786. //     tab buttons inside the tab header.
  787. // Remarks:
  788. //     The CRect structure will contain the margins of the tab header.
  789. //     CXTPTabPaintManager::CAppearanceSet::m_rcHeaderMargin contains
  790. //     these margins.
  791. //
  792. // See Also: CXTPTabPaintManager::CAppearanceSet::m_rcHeaderMargin, CXTPTabPaintManager::GetHeaderRect
  793. //-----------------------------------------------------------------------
  794. virtual CRect GetHeaderMargin()
  795. {
  796. return CRect(m_rcHeaderMargin.left + m_nButtonHeight / 2, m_rcHeaderMargin.top, m_rcHeaderMargin.right + m_nButtonHeight / 2, m_rcHeaderMargin.bottom);
  797. }
  798. //-----------------------------------------------------------------------
  799. // Summary:
  800. //     This method is called to draw a single tab button in the tab
  801. //     client header area.
  802. // Parameters:
  803. //     pDC   - Pointer to a valid device context.
  804. //     pItem - Tab button to draw.
  805. // Remarks:
  806. //     This method will draw a single tab button.  This method only
  807. //     draws the button, no text or icon is added.
  808. //
  809. //     DrawSingleButton calls CXTPTabPaintManager::DrawSingleButtonIconAndText
  810. //     after the button is drawn.  This is called to draw the button's
  811. //     icon and text.
  812. // See Also:: CXTPTabPaintManager::DrawTabControlEx, CXTPTabPaintManager::DrawSingleButtonIconAndText
  813. //-----------------------------------------------------------------------
  814. virtual void DrawSingleButton(CDC* pDC, CXTPTabManagerItem* pItem);
  815. //-----------------------------------------------------------------------
  816. // Summary:
  817. //     This method called to get bounding rectangle of item that was drawn
  818. // Parameters:
  819. //     pItem - Item to test
  820. // Returns: Bounding rectangle of drawing item
  821. // See Also: CXTPTabManagerItem::GetRect
  822. //-----------------------------------------------------------------------
  823. virtual CRect GetButtonDrawRect(const CXTPTabManagerItem* pItem);
  824. };
  825. //-------------------------------------------------------------------------
  826. // Summary:
  827. //     CAppearanceSetVisio is a CAppearanceSet derived
  828. //     class that represents the Visio tab appearance.
  829. // Remarks:
  830. //     To use the Visio appearance, SetAppearance is used to apply
  831. //     the xtpTabAppearanceVisio XTPTabAppearanceStyle.
  832. //
  833. //     CAppearanceSetVisio supports the following XTPTabColorStyle:
  834. //     * <b>xtpTabColorDefault</b>     Default color style.
  835. //     * <b>xtpTabColorOffice2003</b>  Office 2003 color style.
  836. //
  837. // See Also: XTPTabColorStyle, XTPTabAppearanceStyle, SetAppearance, GetAppearance, GetAppearanceSet,
  838. //           SetColor, GetColor, GetColorSet, SetColorSet, SetAppearanceSet
  839. //-------------------------------------------------------------------------
  840. class _XTP_EXT_CLASS CAppearanceSetVisio : public CAppearanceSet
  841. {
  842. public:
  843. //-----------------------------------------------------------------------
  844. // Summary:
  845. //     This member is called to adjust the tab client rectangle.  It will
  846. //     return the new tab client rectangle with margins included.
  847. // Parameters:
  848. //     pTabManager - Pointer to the tab manager to adjust the tab client rectangle.
  849. //     rcClient    - [out] CRect to store tab client rectangle.
  850. // Remarks:
  851. //     CXTPTabPaintManager::AdjustClientRect and CXTPTabPaintManager::RepositionTabControl
  852. //     are called when the window is resized.  When CXTPTabPaintManager::DrawTabControl
  853. //     is called the changes will be used when drawing the tab control.
  854. //
  855. //     This member will adjust the tab client rectangle based on the
  856. //     currently set XTPTabClientFrame.
  857. //
  858. //     Then CXTPTabPaintManager::AdjustClientRect calls this member
  859. //     if there is one or more tab in the tab manager.
  860. // See Also:
  861. //     CXTPTabPaintManager::AdjustClientRect
  862. //-----------------------------------------------------------------------
  863. void AdjustClientRect(CXTPTabManager* pTabManager, CRect& rcClient);
  864. //-----------------------------------------------------------------------
  865. // Summary:
  866. //     This method is called to move the tab buttons of the tab control to their
  867. //     correct positions.
  868. // Parameters:
  869. //     pTabManager - Pointer to the tab manager the tab button are on.
  870. //     pDC         - Pointer to a valid device context.
  871. //     rcClient    - Bounding rectangle of the tab client area.
  872. // Remarks:
  873. //     CXTPTabPaintManager::RepositionTabControl and CXTPTabPaintManager::AdjustClientRect
  874. //     are called when the window is resized.  When DrawTabControl is called
  875. //     the changes will be used when drawing the tab control.
  876. //
  877. //     This member is called in CXTPTabPaintManager::RepositionTabControl.
  878. //     This member calls CXTPTabPaintManager::RepositionTabControlEx.
  879. //-----------------------------------------------------------------------
  880. void RepositionTabControl(CXTPTabManager* pTabManager, CDC* pDC, CRect rcClient);
  881. //-----------------------------------------------------------------------
  882. // Summary:
  883. //     Call this member to get the bounding rectangle to the tab
  884. //     header area.
  885. // Parameters:
  886. //     rcControl   - Bounding rectangle of the tab header.
  887. //                   See CXTPTabManager::GetControlRect.
  888. //     pTabManager - Pointer to a CXTPTabManager.
  889. // Returns:
  890. //     Bounding rectangle of tab header area.
  891. // See Also: GetClientRect, CXTPTabManager::GetControlRect, CXTPTabManager::CAppearanceSet::GetHeaderMargin, CXTPTabManager::CAppearanceSet::GetClientMargin
  892. //-----------------------------------------------------------------------
  893. CRect GetHeaderRect(CRect rcControl, CXTPTabManager* pTabManager);
  894. //-----------------------------------------------------------------------
  895. // Summary:
  896. //     Call this member to get the bounding rectangle to the tab
  897. //     client area.
  898. // Parameters:
  899. //     rcControl   - Bounding rectangle of the tab control.
  900. //     pTabManager - Pointer to a CXTPTabManager.
  901. // Returns:
  902. //     Bounding rectangle of tab client area.
  903. // See Also: GetClientRect, CXTPTabManager::GetControlRect
  904. //-----------------------------------------------------------------------
  905. CRect GetClientRect(CRect rcControl, CXTPTabManager* pTabManager);
  906. //-----------------------------------------------------------------------
  907. // Summary:
  908. //     This method is called to draw a single tab button in the tab
  909. //     client header area.
  910. // Parameters:
  911. //     pDC   - Pointer to a valid device context.
  912. //     pItem - Tab button to draw.
  913. // Remarks:
  914. //     This method will draw a single tab button.  This method only
  915. //     draws the button, no text or icon is added.
  916. //
  917. //     DrawSingleButton calls CXTPTabPaintManager::DrawSingleButtonIconAndText
  918. //     after the button is drawn.  This is called to draw the button's
  919. //     icon and text.
  920. // See Also:: CXTPTabPaintManager::DrawTabControlEx, CXTPTabPaintManager::DrawSingleButtonIconAndText
  921. //-----------------------------------------------------------------------
  922. void DrawSingleButton(CDC* pDC, CXTPTabManagerItem* pItem);
  923. //-----------------------------------------------------------------------
  924. // Summary:
  925. //     This member is called to draw the tab control.
  926. // Parameters:
  927. //     pTabManager - Pointer to the tab manager to draw.
  928. //     pDC         - Pointer to a valid device context.
  929. //     rcControl   - Bounding rectangle of the client area.
  930. // Remarks:
  931. //     This member is called in various Draw and Paint functions.
  932. //
  933. //     This member will be called by CXTPTabPaintManager::DrawTabControl
  934. //     when the tab control needs to be drawn.
  935. //-----------------------------------------------------------------------
  936. void DrawTabControl(CXTPTabManager* pTabManager, CDC* pDC, CRect rcControl);
  937. //-----------------------------------------------------------------------
  938. // Summary:
  939. //     Call this member to retrieve all the supported XTPTabColorStyle
  940. //     for this appearance.
  941. // Returns:
  942. //     xtpTabColorDefault | xtpTabColorOffice2003
  943. // See Also: GetDefaultColorSet
  944. //-----------------------------------------------------------------------
  945. int GetSupportedColorSets() { return xtpTabColorDefault | xtpTabColorOffice2003; }
  946. };
  947. public:
  948. //-------------------------------------------------------------------------
  949. // Summary:
  950. //     Constructs a CXTPTabPaintManager object.
  951. //-------------------------------------------------------------------------
  952. CXTPTabPaintManager();
  953. //-------------------------------------------------------------------------
  954. // Summary:
  955. //     Destroys a CXTPTabPaintManager object, handles cleanup and deallocation.
  956. //-------------------------------------------------------------------------
  957. virtual ~CXTPTabPaintManager();
  958. public:
  959. //-----------------------------------------------------------------------
  960. // Summary:
  961. //     Call this member to apply one of the "built-in" color sets to
  962. //     the tabs.
  963. // Parameters:
  964. //     tabColor - XTPTabColorStyle to apply to the tabs.
  965. // Returns:
  966. //     Pointer to the CXTPTabPaintManager::CColorSet object applied.
  967. // See Also: XTPTabColorStyle, SetColorSet, GetColor, GetColorSet, XTPTabAppearanceStyle,
  968. //           SetAppearanceSet, SetAppearance, GetAppearance, GetAppearanceSet
  969. //-----------------------------------------------------------------------
  970. CColorSet* SetColor(XTPTabColorStyle tabColor);
  971. //-----------------------------------------------------------------------
  972. // Summary:
  973. //     Call this member to apply a custom color set to the tabs.
  974. // Parameters:
  975. //     pColorSet - Pointer to custom CXTPTabPaintManager::CColorSet
  976. //                 appearance set.
  977. // Returns:
  978. //     Pointer to the newly set custom color set.
  979. // See Also:
  980. //     XTPTabColorStyle, SetColor, GetColor, GetColorSet, XTPTabAppearanceStyle,
  981. //     SetAppearanceSet, SetAppearance, GetAppearance, GetAppearanceSet
  982. //-----------------------------------------------------------------------
  983. CColorSet* SetColorSet(CColorSet* pColorSet);
  984. //-----------------------------------------------------------------------
  985. // Summary:
  986. //     Call this member to apply one of the "built-in" appearances to
  987. //     the tabs.
  988. // Parameters:
  989. //     tabAppearance - XTPTabAppearanceStyle to apply to the tabs.
  990. // Returns:
  991. //     Pointer to the CXTPTabPaintManager::CAppearanceSet object applied.
  992. // Remarks:
  993. //     Use SetAppearance to apply a "Built-In" theme such as
  994. //     xtpTabAppearanceExcel.  To apply a custom them, use the
  995. //     SetAppearanceSet member.
  996. // See Also: XTPTabAppearanceStyle, SetAppearanceSet, GetAppearance, GetAppearanceSet,
  997. //           SetColor, GetColor, GetColorSet, SetColorSet
  998. //-----------------------------------------------------------------------
  999. CAppearanceSet* SetAppearance(XTPTabAppearanceStyle tabAppearance);
  1000. //-----------------------------------------------------------------------
  1001. // Summary:
  1002. //     Call this member to apply a custom appearance set.
  1003. // Parameters:
  1004. //     pAppearanceSet - Pointer to custom CXTPTabPaintManager::CAppearanceSet
  1005. //                      appearance set.
  1006. // Remarks:
  1007. //     An appearance set specifies how the tabs will look.  This
  1008. //     is the actual physical structure of the tab buttons.  For example,
  1009. //     tab buttons with an Excel appearance style will have a
  1010. //     half hexagon shape.  SetColorSet is used to set custom
  1011. //     colors.
  1012. //
  1013. //     See the GUI_Eclipse sample for an example of how to create
  1014. //     a custom appearance set and apply it to the tabs.
  1015. // Returns:
  1016. //     Pointer to newly set custom appearance set.
  1017. // See Also: XTPTabAppearanceStyle, SetAppearance, GetAppearance, GetAppearanceSet,
  1018. //           SetColor, GetColor, GetColorSet, SetColorSet
  1019. //-----------------------------------------------------------------------
  1020. CAppearanceSet* SetAppearanceSet(CAppearanceSet* pAppearanceSet);
  1021. //-----------------------------------------------------------------------
  1022. // Summary:
  1023. //     Call this member to get the currently set custom appearance set.
  1024. // Returns:
  1025. //     Pointer to the currently used custom appearance set.
  1026. // Remarks:
  1027. //     An appearance set specifies how the tabs will look.  This
  1028. //     is the actual physical structure of the tab buttons.  For example,
  1029. //     tab buttons with an Excel appearance style will have a
  1030. //     half hexagon shape.  SetColorSet is used to set
  1031. //     custom colors.
  1032. //
  1033. //     See the GUI_Eclipse sample for an example of how to create
  1034. //     a custom appearance set and apply it to the tabs.
  1035. // See Also: GetAppearanceSet, SetAppearanceSet, SetAppearance
  1036. //-----------------------------------------------------------------------
  1037. CAppearanceSet* GetAppearanceSet() const;
  1038. //-----------------------------------------------------------------------
  1039. // Summary:
  1040. //     Call this member to get the currently used custom color set.
  1041. // Returns:
  1042. //     Currently used custom color set.
  1043. // See Also: XTPTabColorStyle, GetColor, SetColorSet, SetColor
  1044. //-----------------------------------------------------------------------
  1045. CColorSet* GetColorSet() const;
  1046. //-----------------------------------------------------------------------
  1047. // Summary:
  1048. //     Call this member to determine the currently set appearance style.
  1049. // Returns:
  1050. //     The currently set XTPTabAppearanceStyle.
  1051. // Remarks:
  1052. //     The appearance is the physical structure of the tab buttons.
  1053. // See Also: XTPTabAppearanceStyle, GetAppearanceSet, SetAppearanceSet, SetAppearance
  1054. //-----------------------------------------------------------------------
  1055. XTPTabAppearanceStyle GetAppearance() const;
  1056. //-----------------------------------------------------------------------
  1057. // Summary:
  1058. //     Call this member to get the currently used tab color style.
  1059. // Returns:
  1060. //     Currently used color style.
  1061. // Remarks:
  1062. //     Color styles are used to colorize the tabs.  For example,
  1063. //     applying the xtpTabColorWinXP color style will give the
  1064. //     tabs Windows XP colorization.
  1065. // See Also: XTPTabColorStyle, SetColor, GetColorSet, SetColorSet
  1066. //-----------------------------------------------------------------------
  1067. XTPTabColorStyle GetColor() const;
  1068. //-----------------------------------------------------------------------
  1069. // Summary:
  1070. //     Call this member to determine is luna colors are disabled.
  1071. // Returns:
  1072. //     TRUE if luna colors are disabled, FALSE is luna colors are
  1073. //     enabled.
  1074. // See Also: DisableLunaColors
  1075. //-----------------------------------------------------------------------
  1076. BOOL IsLunaColorsDisabled() const;
  1077. //-----------------------------------------------------------------------
  1078. // Summary:
  1079. //     Call this member to enable/disable luna colors.
  1080. // Parameters:
  1081. //     bDisableLunaColors - TRUE to disable luna colors, FALSE to
  1082. //                          enable luna colors.
  1083. // Remarks:
  1084. //     Luna colors are the Windows XP colors (Silver, Blue, Olive).
  1085. //     CXTPDrawHelpers::GetCurrentSystemTheme can be called to get
  1086. //     the currently used system theme.
  1087. // See Also: IsLunaColorsDisabled, XTPCurrentSystemTheme,
  1088. //           CXTPDrawHelpers::GetCurrentSystemTheme
  1089. //-----------------------------------------------------------------------
  1090. void DisableLunaColors(BOOL bDisableLunaColors);
  1091. //-----------------------------------------------------------------------
  1092. // Summary:
  1093. //     Retrieves the COLORREF value for the specified OneNote color.
  1094. // Parameters:
  1095. //     tabColor - XTPTabOneNoteColor flag indicating which OneNote color
  1096. //                to retrieve. See remarks section for available flags.
  1097. // Remarks:
  1098. //     The tab manager calls this member function to retrieve the RGB
  1099. //     color for the value specified by <i>tabColor</i>. <i>tabColor</i>
  1100. //     can be one of the following values:
  1101. //     * <b>xtpTabColorBlue</b>    Blue tab color used when OneNote
  1102. //                                 colors enabled.
  1103. //     * <b>xtpTabColorYellow</b>  Yellow tab color used when OneNote
  1104. //                                 colors enabled.
  1105. //     * <b>xtpTabColorGreen</b>   Green tab color used when OneNote
  1106. //                                 colors enabled.
  1107. //     * <b>xtpTabColorRed</b>     Red tab color used when OneNote
  1108. //                                 colors enabled.
  1109. //     * <b>xtpTabColorPurple</b>  Purple tab color used when OneNote
  1110. //                                 colors enabled.
  1111. //     * <b>xtpTabColorCyan</b>    Cyan tab color used when OneNote
  1112. //                                 colors enabled.
  1113. //     * <b>xtpTabColorOrange</b>  Orange tab color used when OneNote
  1114. //                                 colors enabled.
  1115. //     * <b>xtpTabColorMagenta</b> Magenta tab color used when OneNote
  1116. //                                 colors enabled.
  1117. // Example:
  1118. //     See WM_XTP_GETTABCOLOR for an example.
  1119. // See Also:
  1120. //     XTPTabOneNoteColor
  1121. //-----------------------------------------------------------------------
  1122. static COLORREF AFX_CDECL GetOneNoteColor(XTPTabOneNoteColor tabColor);
  1123. //-----------------------------------------------------------------------
  1124. // Summary:
  1125. //     Call this member to enabledisable OneNote colorization for
  1126. //     the tabs.
  1127. // Parameters:
  1128. //     bOneNoteColors - TRUE to enable OneNote colors, FALSE to
  1129. //                      disable OneNote colors.
  1130. // Remarks:
  1131. //     OneNote colors are similar to the tab colorization of tabs in
  1132. //     Microsoft OneNote.
  1133. //-----------------------------------------------------------------------
  1134. void SetOneNoteColors(BOOL bOneNoteColors);
  1135. //-----------------------------------------------------------------------
  1136. // Summary:
  1137. //     Call this member to set the tab position.
  1138. // Parameters:
  1139. //     tabPosition - New XTPTabPosition to apply to tab manager.
  1140. // Remarks:
  1141. //     The position refers to where the tab buttons are located. The
  1142. //     tab buttons can be positioned on the top, bottom, left, or right
  1143. //     side of the tab client area.
  1144. // See Also: GetPosition
  1145. //-----------------------------------------------------------------------
  1146. void SetPosition(XTPTabPosition tabPosition);
  1147. //-----------------------------------------------------------------------
  1148. // Summary:
  1149. //     Call this member to set the tab layout style.
  1150. // Parameters:
  1151. //     tabLayout - New XTPTabLayoutStyle to apply to the tabs.
  1152. // Remarks:
  1153. //     The layout refers to how the tab buttons are sized within the
  1154. //     tab client header.  The tab buttons can be in a compressed,
  1155. //     fixed, auto size, or size to fit layout.
  1156. // See Also: GetLayout
  1157. //-----------------------------------------------------------------------
  1158. void SetLayout(XTPTabLayoutStyle tabLayout);
  1159. //-----------------------------------------------------------------------
  1160. // Summary:
  1161. //     Call this member to set the position of the tab buttons.
  1162. // Returns:
  1163. //     XTPTabPosition of tab buttons.
  1164. // Remarks:
  1165. //     The position refers to where the tab buttons are located. The
  1166. //     tab buttons can be positioned on the top, bottom, left, or right
  1167. //     side of the tab client area.
  1168. // See Also: SetPosition
  1169. //-----------------------------------------------------------------------
  1170. XTPTabPosition GetPosition() const;
  1171. //-----------------------------------------------------------------------
  1172. // Summary:
  1173. //     Call this member to get the currently set tab layout.
  1174. // Returns:
  1175. //     Currently used XTPTabLayoutStyle.
  1176. // Remarks:
  1177. //     The layout refers to how the tab buttons are sized within the
  1178. //     tab client header.  The tab buttons can be in a compressed,
  1179. //     fixed, auto size, or size to fit layout.
  1180. // See Also: SetLayout
  1181. //-----------------------------------------------------------------------
  1182. XTPTabLayoutStyle GetLayout() const;
  1183. //-----------------------------------------------------------------------
  1184. // Summary:
  1185. //     Call this member to set the font for the tabs.
  1186. // Parameters:
  1187. //     pLogFont - New LOGFONT to use for text in the tab buttons.
  1188. //     bUseStandardFont - When calling SetFontIndirect, always
  1189. //                        use FALSE, this will indicate that pLogFont
  1190. //                        should be used as the new tab font.
  1191. //
  1192. //                        TRUE is used when SetFontIndirect
  1193. //                        is called internally when the system font
  1194. //                        is changed.
  1195. //
  1196. // Remarks:
  1197. //     When bUseStandardFont is TRUE, the standard system "icon" font
  1198. //     will be used.  The standard "icon" font is Tahoma 8pt.
  1199. //-----------------------------------------------------------------------
  1200. void SetFontIndirect(LOGFONT* pLogFont, BOOL bUseStandardFont = FALSE);
  1201. public:
  1202. //-----------------------------------------------------------------------
  1203. // Summary:
  1204. //     This member is called to draw the tab control.
  1205. // Parameters:
  1206. //     pTabManager - Pointer to the tab manager to draw.
  1207. //     pDC         - Pointer to a valid device context.
  1208. //     rcControl   - Bounding rectangle of the client area.
  1209. // Remarks:
  1210. //     This member is called in various Draw and Paint functions.
  1211. //
  1212. //     This member will call CXTPTabPaintManager::CAppearanceSet::DrawTabControl
  1213. //     for the currently set appearance. CXTPTabPaintManager::CAppearanceSet::DrawTabControl
  1214. //     will then call CXTPTabPaintManager::DrawTabControlEx.
  1215. //-----------------------------------------------------------------------
  1216. virtual void DrawTabControl(CXTPTabManager* pTabManager, CDC* pDC, CRect rcControl);
  1217. //-----------------------------------------------------------------------
  1218. // Summary:
  1219. //     This member is called to adjust the client rectangle.  It will
  1220. //     return the new client rectangle with margins included.
  1221. // Parameters:
  1222. //     pTabManager - Pointer to the tab manager to adjust the client rectangle.
  1223. //     rcClient    - [out] CRect to store client rectangle.
  1224. // Remarks:
  1225. //     AdjustClientRect and RepositionTabControl are called when the window
  1226. //     is resized.  When DrawTabControl is called the changes will be
  1227. //     used when drawing the tab control.
  1228. //
  1229. //     This member will adjust the client rectangle of the entire tab
  1230. //     manager if IsDrawStaticFrame is TRUE to make room to draw the static
  1231. //     frame.
  1232. //
  1233. //     Then CXTPTabPaintManager::CAppearanceSet::AdjustClientRect is called
  1234. //     if there is one or more tabs in the tab manager.
  1235. // See Also:
  1236. //     CXTPTabPaintManager::CAppearanceSet::AdjustClientRect
  1237. //-----------------------------------------------------------------------
  1238. virtual void AdjustClientRect(CXTPTabManager* pTabManager, CRect& rcClient);
  1239. //-----------------------------------------------------------------------
  1240. // Summary:
  1241. //     This method is called to move the tab buttons of the tab control to their
  1242. //     correct positions.
  1243. // Parameters:
  1244. //     pTabManager - Pointer to the tab manager the tab button are on.
  1245. //     pDC         - Pointer to a valid device context.
  1246. //     rcControl   - Client rectangle of control.
  1247. // Remarks:
  1248. //     RepositionTabControl and AdjustClientRect are called when the window
  1249. //     is resized.  When DrawTabControl is called the changes will be
  1250. //     used when drawing the tab control.
  1251. //
  1252. //     CXTPTabPaintManager::CAppearanceSet::RepositionTabControl is then
  1253. //     called for the currently set appearance.
  1254. //-----------------------------------------------------------------------
  1255. virtual void RepositionTabControl(CXTPTabManager* pTabManager, CDC* pDC, CRect rcControl);
  1256. //-----------------------------------------------------------------------
  1257. // Summary:
  1258. //     This member is called to reposition the tab navigation buttons.
  1259. // Parameters:
  1260. //     pTabManager - Pointer to the tab manager the navigation button are on.
  1261. //     rcClient    - Client rectangle of control.
  1262. // Returns:
  1263. //     Tab header rectangle including header margins.
  1264. // Remarks:
  1265. //     This member is called in CXTPTabPaintManager::RepositionTabControlEx
  1266. //     to reposition the tab navigation buttons.
  1267. //-----------------------------------------------------------------------
  1268. CRect RepositionNavigateButtons(CXTPTabManager* pTabManager, CRect rcClient);
  1269. //-----------------------------------------------------------------------
  1270. // Summary:
  1271. //     This member is called to fill the tab navigation buttons.
  1272. // Parameters:
  1273. //     pDC     - Pointer to a valid device context.
  1274. //     pButton - Tab navigation button to fill.
  1275. //     rc      - Bounding rectangle of the tab navigation button.
  1276. // Remarks:
  1277. //     This member calls m_pColorSet->FillNavigateButton.
  1278. //
  1279. //          The XTPTabColorStyle CColorSet classes override this to perform
  1280. //          actions such as painting the highlighting, pressed, and normal
  1281. //          versions of the tab navigation buttons.
  1282. //
  1283. // See Also: CXTPTabPaintManager::CColorSet::FillNavigateButton, CXTPTabManager::GetNavigateButton, CXTPTabManagerNavigateButton
  1284. //-----------------------------------------------------------------------
  1285. void FillNavigateButton(CDC* pDC, CXTPTabManagerNavigateButton* pButton, CRect& rc);
  1286. //-----------------------------------------------------------------------
  1287. // Summary:
  1288. //     This member is called to draw tab navigation buttons.
  1289. // Parameters:
  1290. //     pDC     - Pointer to a valid device context.
  1291. //     pButton - Tab navigation button to fill.
  1292. //     rc      - Bounding rectangle of the tab navigation button.
  1293. // See Also: CXTPTabPaintManager::CColorSet::FillNavigateButton, CXTPTabManager::GetNavigateButton, CXTPTabManagerNavigateButton
  1294. //-----------------------------------------------------------------------
  1295. virtual void DrawNavigateButton(CDC* pDC, CXTPTabManagerNavigateButton* pButton, CRect& rc);
  1296. //-----------------------------------------------------------------------
  1297. // Summary:
  1298. //     This method is called to draw the tab button's text and icon.
  1299. // Parameters:
  1300. //     pDC    - Pointer to a valid device context.
  1301. //     pItem  - Tab button to draw text and icon on.
  1302. //     rcItem - Bounding rectangle of the tab.
  1303. //     bDraw  - TRUE to draw the text and icon, FALSE to calculate
  1304. //              the button width (no drawing is done).
  1305. // Returns:
  1306. //     Returns 0 if bDraw is TRUE and drawing is successful.
  1307. //
  1308. //          Returns the button width including the left and right button margin
  1309. //          if bDraw is FALSE.
  1310. //
  1311. // Remarks:
  1312. //     This method only draws the text and icon on a tab button.
  1313. //
  1314. //          CXTPTabPaintManager::CAppearanceSet::DrawSingleButton calls
  1315. //          CXTPTabPaintManager::DrawSingleButtonIconAndText
  1316. //          after the button is drawn.  This is called to draw the button's
  1317. //          icon and text.
  1318. //
  1319. // See Also: CXTPTabPaintManager::DrawTabControlEx, CXTPTabPaintManager::CAppearanceSet::DrawSingleButton
  1320. //-----------------------------------------------------------------------
  1321. virtual int DrawSingleButtonIconAndText(CDC* pDC, CXTPTabManagerItem* pItem, CRect rcItem, BOOL bDraw);
  1322. //-----------------------------------------------------------------------
  1323. // Summary:
  1324. //     Call this member to ensure that a tab is visible.
  1325. // Parameters:
  1326. //     pTabManager - Pointer to the tab manager the tab in on.
  1327. //     pItem       - CXTPTabManagerItem tab to make visible.
  1328. // See Also: CXTPTabManager::SetHeaderOffset, CXTPTabManager::GetHeaderOffset
  1329. //-----------------------------------------------------------------------
  1330. void EnsureVisible(CXTPTabManager* pTabManager, CXTPTabManagerItem* pItem);
  1331. //-------------------------------------------------------------------------
  1332. // Summary:
  1333. //     This member is called to refresh the visual metrics of the
  1334. //     tab main manager.
  1335. // Remarks:
  1336. //     This member checks if m_bUseStandardFont is TRUE, if it is,
  1337. //     then it updates the font with the standard system "icon" font
  1338. //     which is Tahoma 8pt.
  1339. //     This member also calls the RefreshMetrics member for the
  1340. //     currently used CColorSet and CAppearanceSet.
  1341. //-------------------------------------------------------------------------
  1342. virtual void RefreshMetrics();
  1343. //-----------------------------------------------------------------------
  1344. // Summary:
  1345. //     This member adds a control to the list of controls that receive
  1346. //     notification when a property of paint manager has changed.
  1347. // Parameters:
  1348. //     pObserver - List of controls that receive
  1349. //     notification when a property of paint manager has changed.
  1350. // Remarks:
  1351. //     This member is not used in the MFC version.  This is only used
  1352. //     in the ActiveX version and does nothing in MFC.
  1353. //-----------------------------------------------------------------------
  1354. void AddObserver(CXTPTabManagerAtom* pObserver);
  1355. //-----------------------------------------------------------------------
  1356. // Summary:
  1357. //     Call this member function to enable or disable tooltips show
  1358. // Parameters:
  1359. //     behaviour - Tooltips behaviour will be set. See remarks section for available flags.
  1360. // Remarks:
  1361. //     <i>behaviour<i> parameter can be one of the following:
  1362. //     * <b>xtpTabToolTipNever</b> Show tooltips for tabs always
  1363. //     * <b>xtpTabToolTipAlways</b> Doesn't show tooltips for tabs
  1364. //     * <b>xtpTabToolTipShrinkedOnly</b> Show tooltips only if tab was shrinked (see xtpTabLayoutSizeToFit layout)
  1365. //-----------------------------------------------------------------------
  1366. void EnableToolTips(XTPTabToolTipBehaviour behaviour = xtpTabToolTipAlways);
  1367. public:
  1368. //-----------------------------------------------------------------------
  1369. // Summary:
  1370. //     Call this member to get the CFont used for displaying tab
  1371. //     caption text.
  1372. // Parameters:
  1373. //     bVertical - TRUE if the XTPTabPosition is vertical, FALSE if
  1374. //                 the XTPTabPosition is horizontal.
  1375. // Returns:
  1376. //     CFont used to display caption text in the tab buttons.
  1377. // See Also: GetBoldFont
  1378. //-----------------------------------------------------------------------
  1379. CFont* GetFont(BOOL bVertical = FALSE);
  1380. //-----------------------------------------------------------------------
  1381. // Summary:
  1382. //     Call this method to get the CFont used for displaying tab
  1383. //     caption text when bold.
  1384. // Parameters:
  1385. //     bVertical - TRUE if the XTPTabPosition is vertical, FALSE if
  1386. //                 the XTPTabPosition is horizontal.
  1387. // Returns:
  1388. //     CFont used to display bold caption text in the tab buttons.
  1389. // Remarks:
  1390. //     Bold font is used to display caption text when a tab is
  1391. //     selected and m_bBoldSelected = TRUE.
  1392. //
  1393. //          If m_bBoldNormal = TRUE, then the tabs will use this font
  1394. //          even when not selected.
  1395. // See Also: m_bBoldNormal, m_bBoldSelected, GetFont
  1396. //-----------------------------------------------------------------------
  1397. CFont* GetBoldFont(BOOL bVertical = FALSE);
  1398. protected:
  1399. //-----------------------------------------------------------------------
  1400. // Summary:
  1401. //     This member is called to change the tab button size when the
  1402. //     XTPTabLayoutStyle is xtpTabLayoutSizeToFit.
  1403. // Parameters:
  1404. //     pTabManager - Pointer to tab manager.
  1405. //     nWidth      - Total width that all tab buttons must fit in.
  1406. // Remarks:
  1407. //     When calculating nWidth, the left and right rcHeaderMargin and
  1408. //     tab navigation button widths should be subtracted from the
  1409. //     TabClient width.
  1410. // See Also: XTPTabLayoutStyle, SetLayout, GetLayout
  1411. //-----------------------------------------------------------------------
  1412. void SizeToFit(CXTPTabManager* pTabManager, int nWidth);
  1413. //-----------------------------------------------------------------------
  1414. // Summary:
  1415. //     This member is called to draw the tab control.
  1416. // Parameters:
  1417. //     pTabManager - Pointer to the tab manager to draw.
  1418. //     pDC         - Pointer to a valid device context.
  1419. //     rcControl   - Bounding rectangle of the client area.
  1420. // Remarks:
  1421. //     DrawTabControl calls CXTPTabPaintManager::CAppearanceSet::DrawTabControl
  1422. //     which will then call DrawTabControlEx if it has not been overridden.
  1423. // See Also:
  1424. //     CXTPTabPaintManager::CAppearanceSet::DrawTabControl
  1425. //-----------------------------------------------------------------------
  1426. void DrawTabControlEx(CXTPTabManager* pTabManager, CDC* pDC, CRect rcControl);
  1427. //-----------------------------------------------------------------------
  1428. // Summary:
  1429. //     This method is called to move the tab buttons of the tab control to their
  1430. //     correct positions.
  1431. // Parameters:
  1432. //     pTabManager - Pointer to the tab manager the tab button are on.
  1433. //     pDC         - Pointer to a valid device context.
  1434. //     rcClient    - Client rectangle of control
  1435. // Remarks:
  1436. //     RepositionTabControl calls CXTPTabPaintManager::CAppearanceSet::RepositionTabControl
  1437. //     which will then call RepositionTabControlEx if it has not been overridden.
  1438. //
  1439. //     RepositionTabControl and AdjustClientRect are called when the window
  1440. //     is resized.  When DrawTabControl is called the changes will be
  1441. //     used when drawing the tab control.
  1442. // See Also:
  1443. //     CXTPTabPaintManager::CAppearanceSet::RepositionTabControl
  1444. //-----------------------------------------------------------------------
  1445. void RepositionTabControlEx(CXTPTabManager* pTabManager, CDC* pDC, CRect rcClient);
  1446. //-----------------------------------------------------------------------
  1447. // Summary:
  1448. //     This method is called to move the tab buttons of the multi row tab control to their
  1449. //     correct positions.
  1450. // Parameters:
  1451. //     pTabManager - Pointer to the tab manager the tab button are on.
  1452. //     pDC         - Pointer to a valid device context.
  1453. //     rcClient    - Client rectangle of control
  1454. //-----------------------------------------------------------------------
  1455. void RepositionTabControlMultiRow(CXTPTabManager* pTabManager, CDC* pDC, CRect rcClient);
  1456. //-------------------------------------------------------------------------
  1457. // Summary:
  1458. //     This member is called when a property of the tab paint manager
  1459. //     has changed.
  1460. // Remarks:
  1461. //     This member is called when the value of a property is changed.
  1462. //     For example, when hot tracking in enabled/disabled.
  1463. //-------------------------------------------------------------------------
  1464. virtual void OnPropertyChanged();
  1465. protected:
  1466. //-----------------------------------------------------------------------
  1467. // Summary:
  1468. //     This member is called to get the total button length including
  1469. //     the left and right button margin.
  1470. // Parameters:
  1471. //     nValue - Width of tab button.
  1472. //     nMin   - Minimum width of tab button.
  1473. //     nMax   - Maximum width of tab button.
  1474. // Returns:
  1475. //     Tab button length including the left and right button margin.
  1476. // See Also: CXTPTabManager::GetItemMetrics
  1477. //-----------------------------------------------------------------------
  1478. int _GetButtonLength(int nValue, int nMin, int nMax);
  1479. //-----------------------------------------------------------------------
  1480. // Summary:
  1481. //     This member is called to place an ellipse "..." in the middle
  1482. //     of a string.
  1483. // Parameters:
  1484. //     pDC     - Pointer to a valid device context.
  1485. //     strItem - String item to place an ellipse in.
  1486. //     rcItem  - Bounding rectangle of tab button.  This is the rectangle
  1487. //               (in logical coordinates) in which the text is to be formatted.
  1488. //     uFormat - See nFormat parameter of CDC::DrawText.
  1489. //-----------------------------------------------------------------------
  1490. void DrawTextPathEllipsis(CDC* pDC, const CString& strItem, CRect rcItem, UINT uFormat);
  1491. protected:
  1492. //{{AFX_CODEJOCK_PRIVATE
  1493. int GetPrefixTextExtent(CDC* pDC, const CString& str, UINT uFormat);
  1494. void StripMnemonics(CString& strClear);
  1495. void DrawRowItems(CXTPTabManager* pTabManager, CDC* pDC, const CRect& rcClient, int nItemRow);
  1496. void CreateMultiRowIndexer(CXTPTabManager* pTabManager, CDC* pDC, int nWidth);
  1497. virtual void DrawFocusRect(CDC* pDC, CXTPTabManagerItem* pItem, CRect rcItem);
  1498. BOOL _CreateMultiRowIndexerBestFit(CXTPTabManager* pTabManager, int nWidth, int nRow, int nTotalLength);
  1499. static int _cdecl _SizeToFitCompare(const void *arg1, const void *arg2);
  1500. //}}AFX_CODEJOCK_PRIVATE
  1501. public:
  1502. BOOL              m_bHotTracking;               // If TRUE, tab hot tracking will be enabled.
  1503. BOOL              m_bShowIcons;                 // If TRUE, tab icons will be drawn is icons were added
  1504. BOOL              m_bBoldSelected;              // If TRUE, the text of selected tabs will be displayed in bold font
  1505. BOOL              m_bBoldNormal;                // If TRUE, bold font will be used for all tab both selected and non-selected.
  1506. BOOL              m_bDisableLunaColors;         // If FALSE, Tabs will not use LunaColors, is the current theme uses LunaColors
  1507. BOOL              m_bOneNoteColors;             // If TRUE, tabs will use OneNote colorization
  1508. XTPTabClientFrame m_clientFrame;                // Frame style of tab client area.
  1509. BOOL              m_bStaticFrame;               // If TRUE, a static frame will be drawn around the entire tab area
  1510. CRect             m_rcClientMargin;             // Margin around tab client area.
  1511. CRect             m_rcControlMargin;            // Margin around entire tab control (tab client header and tab client area).
  1512. CRect             m_rcButtonMargin;             // Margin around the text in tab button.
  1513. CRect             m_rcButtonTextPadding;             // Margin around the text in tab button.
  1514. BOOL              m_bInvertGradient;            // If TRUE, the colors passed into CXTPTabPaintManager::CColorSet::GradientFill will be swapped before the rectangle is filled with the gradient.
  1515. BOOL              m_bFillBackground;            // If TRUE, then the tab client space is filled using CXTPTabPaintManager.CColorSet.m_clrControlFace color.  This is only FALSE when drawing DockingPanePanel AutoHide tabs because there is no client area to draw.
  1516. CSize             m_szIcon;                     // Size of icon displayed in tab button.
  1517. BOOL              m_bDrawTextPathEllipsis;      // If TRUE, when the size of a tab button is too small to display the caption the middle of the caption will be replaced with an ellipse "...", If FALSE, the the end of the caption will be replaced with the ellipse.
  1518. BOOL              m_bDrawTextEndEllipsis;       // If TRUE, when the size of a tab button is too small to display the caption the end of the caption will be replaced with an ellipse "...", If FALSE, the the end of the caption will be replaced with the ellipse.
  1519. BOOL              m_bDrawTextNoPrefix;          // If FALSE, then an ampersand '&' in the tab button caption will be ignored and a double ampersand '&&' will display a single ampersand '&'.  If TRUE, the the caption will be displayed unmodified.
  1520. UINT              m_nDrawTextFormat;            // Text format for tabs (default - DT_LEFT | DT_VCENTER)
  1521. BOOL              m_bDrawTextHidePrefix;        // If FALSE, then an ampersand '&' in the tab button caption will be ignored and a double ampersand '&&' will display a single ampersand '&'.  If TRUE, the the caption will be hidden.
  1522. BOOL              m_bMultiRowFixedSelection;    // FALSE to move row with selected item close to client pane.
  1523. BOOL              m_bMultiRowJustified;         // Stretch each row of tabs to fill the entire width of the control.
  1524. BOOL              m_bDrawFocusRect;             // TRUE to draw focus rect for focused item.
  1525. BOOL              m_bSelectOnDragOver;          // TRUE to activate tab when user drag files/text under it.
  1526. int               m_nButtonExtraLength;         // Additional padding of tabs
  1527. BOOL              m_bSelectOnButtonDown;        // if TRUE, when tab selected on mouse button down.
  1528. BOOL              m_bClearTypeTextQuality;      // TRUE to enable ClearType text for the font.
  1529. BOOL              m_bRotateImageOnVerticalDraw; // TRUE to rotate image when tab located left or right
  1530. BOOL              m_bClipHeader;                // TRUE to select clip rectangle before draw tabs
  1531. CSize             m_szNavigateButton;
  1532. BOOL              m_bShowTabs;                  // TRUE to show tabs
  1533. int               m_nMinTabWidth;               // Minimum tabs width
  1534. int               m_nMaxTabWidth;               // Maximum tabs width
  1535. int               m_nFixedTabWidth;             // Tabs width for fixed layout
  1536. XTPTabToolTipBehaviour m_toolBehaviour;         // Tootips behaviour
  1537. protected:
  1538. CAppearanceSet*   m_pAppearanceSet;             // Currently set CAppearanceSet.
  1539. CColorSet*        m_pColorSet;                  // Currently used CColorSet.
  1540. CArray<CXTPTabManagerAtom*, CXTPTabManagerAtom*> m_arrObservers; // List of controls that receive notification when a property of paint manager has changed.
  1541. XTPTabAppearanceStyle m_tabAppearance;          // Currently set appearance style.
  1542. XTPTabColorStyle  m_tabColor;                   // Currently used color style.
  1543. XTPTabPosition    m_tabPosition;                // Currently set tab button position.  The position refers to where the tab buttons are located. The tab buttons can be positioned on the top, bottom, left, or right side of the tab client area.
  1544. XTPTabLayoutStyle m_tabLayout;                  // Currently set tab button layout.  The layout refers to how the tab buttons are sized within the tab client header.
  1545. CFont             m_fntNormal;                  // Font used to display text in tab buttons.
  1546. CFont             m_fntBold;                    // Font used to display bold text in the tab buttons.  I.e. When a tab is selected and m_bBoldSelected = TRUE.
  1547. CFont             m_fntVerticalNormal;          // Font used to display tab button caption when the tab position is vertical.
  1548. CFont             m_fntVerticalBold;            // Font used to display bold text in the tab buttons when the tab position is vertical.  I.e. When a tab is selected and m_bBoldSelected = TRUE.
  1549. BOOL              m_bUseStandardFont;           // TRUE to use standard system "icon" font which is Tahoma 8pt.
  1550. private:
  1551. int m_nItemColor;
  1552. friend class CAppearanceSet;
  1553. friend class CColorSet;
  1554. friend class CXTPTabManager;
  1555. };
  1556. AFX_INLINE void CXTPTabPaintManager::CColorSet::SelectClipRgn(CDC* /*pDC*/, CRect /*rcClient*/, CXTPTabManager* /*pTabManager*/) {
  1557. }
  1558. //////////////////////////////////////////////////////////////////////////
  1559. AFX_INLINE CRect CXTPTabPaintManager::CAppearanceSet::GetHeaderMargin() {
  1560. return m_rcHeaderMargin;
  1561. }
  1562. AFX_INLINE CRect CXTPTabPaintManager::CAppearanceSet::FillTabControl(CXTPTabManager* /*pTabManager*/, CDC* /*pDC*/, CRect /*rcControl*/) {
  1563. return 0;
  1564. }
  1565. AFX_INLINE void CXTPTabPaintManager::CAppearanceSet::DrawSingleButton(CDC* /*pDC*/, CXTPTabManagerItem* /*pItem*/) {
  1566. }
  1567. AFX_INLINE void CXTPTabPaintManager::CAppearanceSet::DrawTabControl(CXTPTabManager* pTabManager, CDC* pDC, CRect rcControl) {
  1568. m_pPaintManager->DrawTabControlEx(pTabManager, pDC, rcControl);
  1569. }
  1570. AFX_INLINE void CXTPTabPaintManager::CAppearanceSet::RepositionTabControl(CXTPTabManager* pTabManager, CDC* pDC, CRect rcClient) {
  1571. m_pPaintManager->RepositionTabControlEx(pTabManager, pDC, rcClient);
  1572. }
  1573. //////////////////////////////////////////////////////////////////////////
  1574. AFX_INLINE CFont* CXTPTabPaintManager::GetFont(BOOL bVertical) {
  1575. return bVertical ? &m_fntVerticalNormal : &m_fntNormal;
  1576. }
  1577. AFX_INLINE CFont* CXTPTabPaintManager::GetBoldFont(BOOL bVertical) {
  1578. return bVertical ? &m_fntVerticalBold : &m_fntBold;
  1579. }
  1580. AFX_INLINE CXTPTabPaintManager::CAppearanceSet* CXTPTabPaintManager::GetAppearanceSet() const {
  1581. return m_pAppearanceSet;
  1582. }
  1583. AFX_INLINE CXTPTabPaintManager::CColorSet* CXTPTabPaintManager::GetColorSet() const {
  1584. return m_pColorSet;
  1585. }
  1586. AFX_INLINE void CXTPTabPaintManager::EnableToolTips(XTPTabToolTipBehaviour behaviour) {
  1587. m_toolBehaviour = behaviour;
  1588. }
  1589. #endif // !defined(__XTPTABPAINTMANAGER_H__)