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

对话框与窗口

开发平台:

Visual C++

  1. // XTCaption.h : interface for the CXTCaption class.
  2. //
  3. // This file is a part of the XTREME CONTROLS MFC class library.
  4. // (c)1998-2008 Codejock Software, All Rights Reserved.
  5. //
  6. // THIS SOURCE FILE IS THE PROPERTY OF CODEJOCK SOFTWARE AND IS NOT TO BE
  7. // RE-DISTRIBUTED BY ANY MEANS WHATSOEVER WITHOUT THE EXPRESSED WRITTEN
  8. // CONSENT OF CODEJOCK SOFTWARE.
  9. //
  10. // THIS SOURCE CODE CAN ONLY BE USED UNDER THE TERMS AND CONDITIONS OUTLINED
  11. // IN THE XTREME TOOLKIT PRO LICENSE AGREEMENT. CODEJOCK SOFTWARE GRANTS TO
  12. // YOU (ONE SOFTWARE DEVELOPER) THE LIMITED RIGHT TO USE THIS SOFTWARE ON A
  13. // SINGLE COMPUTER.
  14. //
  15. // CONTACT INFORMATION:
  16. // support@codejock.com
  17. // http://www.codejock.com
  18. //
  19. /////////////////////////////////////////////////////////////////////////////
  20. //{{AFX_CODEJOCK_PRIVATE
  21. #if !defined(__XTCAPTION_H__)
  22. #define __XTCAPTION_H__
  23. //}}AFX_CODEJOCK_PRIVATE
  24. #if _MSC_VER >= 1000
  25. #pragma once
  26. #endif // _MSC_VER >= 1000
  27. class CXTCaption;
  28. class CXTCaptionPopupWnd;
  29. class CXTCaptionTheme;
  30. #include "XTCaptionTheme.h"
  31. #define XT_IDC_BTN_CLOSE                100
  32. // --------------------------------------------------------------------
  33. // Summary:
  34. //     CXTCaptionButton is a CXTButton derived class. It is used
  35. //     by the CXTCaption class to activate a CXTCaptionPopupWnd window.
  36. // --------------------------------------------------------------------
  37. class _XTP_EXT_CLASS CXTCaptionButton : public CXTButton
  38. {
  39. //{{AFX_CODEJOCK_PRIVATE
  40. DECLARE_THEME_HOST(CXTCaptionButton)
  41. DECLARE_THEME_REFRESH(CXTCaptionButton)
  42. //}}AFX_CODEJOCK_PRIVATE
  43. public:
  44. //-----------------------------------------------------------------------
  45. // Summary      : Constructs a CXTCaptionButton object
  46. //-----------------------------------------------------------------------
  47. CXTCaptionButton();
  48. // -----------------------------------------------------------------------------
  49. // Summary:
  50. //     This member function will set the display style for the button.
  51. // Parameters:
  52. //     dwxStyle -  Specifies the button style. See the Remarks section below for
  53. //                 a list of available styles.
  54. //     bRedraw -   Specifies whether the button is to be redrawn. A nonzero
  55. //                 value redraws the button. A zero value does not redraw the
  56. //                 button. The button is redrawn by default.
  57. // Remarks:
  58. //     Styles to be added or removed can be combined by using the bitwise
  59. //     OR (|) operator. It can be one or more of the following:
  60. //     * <b>BS_XT_FLAT</b> Draws a flat button.
  61. //     * <b>BS_XT_SEMIFLAT</b> Draws a semi-flat button.
  62. //     * <b>BS_XT_TWOROWS</b> Draws images and text that are
  63. //           centered.
  64. //     * <b>BS_XT_SHOWFOCUS</b> Draws a focus rect when the button
  65. //           has input focus.
  66. //     * <b>BS_XT_HILITEPRESSED</b> Highlights the button when
  67. //           pressed.
  68. //     * <b>BS_XT_XPFLAT</b> Draws a flat button ala Office XP.
  69. // Returns:
  70. //     The previous style that was set.
  71. // -----------------------------------------------------------------------------
  72. virtual DWORD SetXButtonStyle(DWORD dwxStyle, BOOL bRedraw = TRUE);
  73. //-----------------------------------------------------------------------
  74. // Summary      : This member function is called to return a pointer to the
  75. //                parent caption.
  76. // Returns      : A pointer to a CXTCaption object.
  77. //-----------------------------------------------------------------------
  78. CXTCaption* GetCaption() {
  79. return m_pCaption;
  80. }
  81. //-----------------------------------------------------------------------
  82. // Summary      : This member fuction is called to set the pointer to the
  83. //                parent caption.
  84. // Parameters   : pCaption - A pointer to a CXTCaption object.
  85. //-----------------------------------------------------------------------
  86. void SetCaption(CXTCaption* pCaption) {
  87. m_pCaption = pCaption;
  88. }
  89. protected:
  90. CXTCaption* m_pCaption; // A pointer to the parent CXTCaption.
  91. };
  92. const DWORD CPWS_EX_GROOVE_EDGE    = 0x0001;  //<ALIAS CXTCaption::Create@CWnd*@LPCTSTR@DWORD@DWORD@const CRect&@UINT>
  93. const DWORD CPWS_EX_RAISED_EDGE    = 0x0002;  //<ALIAS CXTCaption::Create@CWnd*@LPCTSTR@DWORD@DWORD@const CRect&@UINT>
  94. const DWORD CPWS_EX_CLOSEBUTTON    = 0x0004;  //<ALIAS CXTCaption::Create@CWnd*@LPCTSTR@DWORD@DWORD@const CRect&@UINT>
  95. // ----------------------------------------------------------------------
  96. // Summary:
  97. //     CXTCaption is a CStatic derived class. It is used to create
  98. //     caption or info bars similar to those in Microsoft(r) Outlook.
  99. // ----------------------------------------------------------------------
  100. class _XTP_EXT_CLASS CXTCaption : public CStatic, public CXTThemeManagerStyleHostBase
  101. {
  102. DECLARE_DYNAMIC(CXTCaption)
  103. DECLARE_THEME_HOST(CXTCaption)
  104. DECLARE_THEME_REFRESH(CXTCaption)
  105. public:
  106. // ------------------------------------------------------------
  107. // Summary:
  108. //     Destroys a CXTCaption object, handles cleanup and
  109. //     deallocation
  110. // ------------------------------------------------------------
  111. virtual ~CXTCaption();
  112. // -----------------------------------------
  113. // Summary:
  114. //     Constructs a CXTCaption object
  115. // -----------------------------------------
  116. CXTCaption();
  117. public:
  118. //-----------------------------------------------------------------------
  119. // Summary      : This member function is called to determine if the caption
  120. //                is configured to be used as the application's primary caption.
  121. // Returns      : true if the caption is configured to be used as the application's
  122. //                primary caption, otherwise false.
  123. //-----------------------------------------------------------------------
  124. bool IsAppCaption() const {
  125. return m_bAppCaption;
  126. }
  127. //-----------------------------------------------------------------------
  128. // Summary      : This member function is called to set the flag that indicates
  129. //                if the caption is the application's primary caption.
  130. // Parameters   : bAppCaption - true if the caption is configured to be used as the
  131. //                applications primary caption.
  132. //-----------------------------------------------------------------------
  133. void SetAppCaption(bool bAppCaption) {
  134. m_bAppCaption = bAppCaption;
  135. }
  136. //-----------------------------------------------------------------------
  137. // Summary:
  138. //     Call this member function to get a reference to the caption's close
  139. //     / popup button.
  140. // Returns:
  141. //     A reference to a CXTCaptionButton object.
  142. //-----------------------------------------------------------------------
  143. CXTCaptionButton& GetCaptionButton();
  144. //-----------------------------------------------------------------------
  145. // Summary:
  146. //     This member function will set the caption bar border, background,
  147. //     and font colors.
  148. // Parameters:
  149. //     clrBorder - An RGB value that represents the new border color.
  150. //     clrFace - An RGB value that represents the new background color.
  151. //     clrText - An RGB value that represents the new font color.
  152. //-----------------------------------------------------------------------
  153. virtual void SetCaptionColors(COLORREF clrBorder, COLORREF clrFace, COLORREF clrText);
  154. //-----------------------------------------------------------------------
  155. // Summary:
  156. //     Call this member function to enable Office 2003 visualizations.
  157. // Parameters:
  158. //     b2003Colors - True to enable Office 2003 visualizations, false
  159. //                   to disable.
  160. //-----------------------------------------------------------------------
  161. void SetOffice2003Colors(bool b2003Colors = true);
  162. //-----------------------------------------------------------------------
  163. // Summary:
  164. //     Call this member function to return the current style settings
  165. //     for the caption.
  166. // Returns:
  167. //     A DWORD value that represents the current style set for the caption.
  168. //-----------------------------------------------------------------------
  169. DWORD GetCaptionStyle() const;
  170. // -------------------------------------------------------------------
  171. // Summary:
  172. //     Modifies the caption title and appearance.
  173. // Parameters:
  174. //     nBorderSize -   Specifies size in pixels of the banner border.
  175. //     pFont -         Specifies the new caption font.
  176. //     lpszWindText -  NULL terminated string specifying the new caption
  177. //                     text.
  178. //     hIcon -         Handle of the icon to be drawn in the caption.
  179. // Remarks:
  180. //     You can use this member function to set the border size that is
  181. //     drawn around the caption banner, the font that the caption will
  182. //     use, and the caption text and icon to be displayed.
  183. // -------------------------------------------------------------------
  184. virtual void ModifyCaptionStyle(int nBorderSize, CFont* pFont = NULL, LPCTSTR lpszWindText = NULL, HICON hIcon = NULL);
  185. //-----------------------------------------------------------------------
  186. // Summary:
  187. //     Call this member function to set the child and notification windows
  188. //     for the caption bar.
  189. // Parameters:
  190. //     pChild     - A CWnd pointer that represents the child window to be
  191. //                  displayed in the popup window.
  192. //     pNotifyWnd - A CWnd pointer that represents the window to receive
  193. //                  notification messages.
  194. //-----------------------------------------------------------------------
  195. virtual void SetChildWindow(CWnd* pChild, CWnd* pNotifyWnd);
  196. //-----------------------------------------------------------------------
  197. // Summary:
  198. //     This member function is called to destroy the popup window and
  199. //     associated children.
  200. //-----------------------------------------------------------------------
  201. virtual void KillChildWindow();
  202. //-----------------------------------------------------------------------
  203. // Summary:
  204. //     This member function is called to display the popup window and
  205. //     associated children.
  206. // Returns:
  207. //     TRUE if the popup window is successfully displayed, otherwise FALSE.
  208. //-----------------------------------------------------------------------
  209. virtual BOOL ShowPopupWindow();
  210. //-----------------------------------------------------------------------
  211. // Summary:
  212. //     This member function is called to update the text and icon for the
  213. //     caption bar.
  214. // Parameters:
  215. //     lpszWindowText - NULL terminated string to display in the caption bar.
  216. //     hIcon          - Handle of the icon to display in the caption
  217. //                      bar. It can be NULL.
  218. //-----------------------------------------------------------------------
  219. virtual void UpdateCaption(LPCTSTR lpszWindowText, HICON hIcon);
  220. // ---------------------------------------------------------------------------------
  221. // Summary:
  222. //     Creates and initializes the child window associated with the
  223. //     CXTCaption object.
  224. // Parameters:
  225. //     pParentWnd -      Specifies the parent window.
  226. // lpszWindowName -  Points to a NULL terminated character string that contains
  227. //                       the window name. This will be displayed in the caption
  228. //                       area.
  229. // dwExStyle -       Specifies caption bar style. See the Remarks section below
  230. //                       for a complete list of available styles.
  231. // dwStyle -         Specifies the control window style. Apply any combination
  232. //                       of caption bar styles to the control.
  233. // rect -            Specifies the position and size of the caption bar. It can
  234. //                       be either a <i>RECT</i> structure or a <i>CRect</i> object.
  235. // nID -             Specifies the caption bar control ID.
  236. // Remarks:
  237. //     This method creates a caption bar window and attaches it to the
  238. //     CXTCaption object. You construct a caption bar in two steps.
  239. //     First, call the constructor, which constructs the CXTCaption
  240. //     object. Then call Create, which creates the Window's child window
  241. //     and attaches it to CXTCaption. Create initializes the window class
  242. //     name and window name and registers values for its style, parent,
  243. //     and ID.<p/>
  244. // <p/>
  245. // Styles to be added or removed can be combined by using the bitwise
  246. //     OR (|) operator. It can be one or more of the following:
  247. //     * <b>CPWS_EX_GROOVE_EDGE</b> Show the caption with a sunken
  248. //           border.
  249. //     * <b>CPWS_EX_RAISED_EDGE</b> Show the caption with a raised 3D
  250. //           border.
  251. //     * <b>CPWS_EX_CLOSEBUTTON</b> Caption has a close button.
  252. // Returns:
  253. //     TRUE if successful, otherwise returns FALSE.
  254. // ---------------------------------------------------------------------------------
  255. virtual BOOL Create(CWnd* pParentWnd, LPCTSTR lpszWindowName, DWORD dwExStyle = CPWS_EX_RAISED_EDGE, DWORD dwStyle = WS_VISIBLE | SS_CENTER | SS_CENTERIMAGE, const CRect& rect = CRect(0, 0, 0, 0), UINT nID = 0xffff);
  256. // ----------------------------------------------------------------
  257. // Summary:
  258. //     This member function is called to refresh the caption button
  259. //     style.
  260. // ----------------------------------------------------------------
  261. void RefreshButton();
  262. //-----------------------------------------------------------------------
  263. // Summary:
  264. //     This member function retrieves the current caption title.
  265. // Returns:
  266. //     A reference to a CString object that contains the caption title.
  267. //-----------------------------------------------------------------------
  268. const CString& GetCaptionText();
  269. //-----------------------------------------------------------------------
  270. // Summary:
  271. //     Call this member function to see if the caption has a close button.
  272. // Returns:
  273. //     TRUE if the caption contains a close button, otherwise FALSE.
  274. //-----------------------------------------------------------------------
  275. BOOL HasCloseButton() const;
  276. //-----------------------------------------------------------------------
  277. // Summary:
  278. //     This member function is called to determine the size and location
  279. //     of the text associated with the caption.
  280. // Returns:
  281. //     The size and location of the caption text or an empty rect if no text
  282. //     is defined.
  283. //-----------------------------------------------------------------------
  284. virtual CRect GetTextRect() const;
  285. protected:
  286. //-----------------------------------------------------------------------
  287. // Summary:
  288. //     This member function is called to draw the caption background.
  289. // Parameters:
  290. //     pDC    - A CDC pointer that represents the current device context.
  291. //     rcItem - A CRect reference that represents the size of the area to paint.
  292. //-----------------------------------------------------------------------
  293. virtual void DrawCaptionBack(CDC* pDC, CRect& rcItem);
  294. //-----------------------------------------------------------------------
  295. // Summary:
  296. //     This member function is called to paint the caption text.
  297. // Parameters:
  298. //     pDC - A CDC pointer that represents the current device context.
  299. //-----------------------------------------------------------------------
  300. virtual void DrawCaptionText(CDC* pDC);
  301. //-----------------------------------------------------------------------
  302. // Summary:
  303. //     This member function is called to paint the caption icon.
  304. // Parameters:
  305. //     pDC    - A CDC pointer that represents the current device context.
  306. //     rcItem - A CRect reference that represents the size of the area to paint.
  307. //-----------------------------------------------------------------------
  308. virtual void DrawCaptionIcon(CDC* pDC, CRect& rcItem);
  309. //-----------------------------------------------------------------------
  310. // Summary:
  311. //     This member function is called to update the caption text.
  312. // Parameters:
  313. //     pDC - A CDC pointer that represents the current device context.
  314. //-----------------------------------------------------------------------
  315. virtual void UpdateCaptionText(CDC* pDC);
  316. //-----------------------------------------------------------------------
  317. // Summary:
  318. //     This member function is called to determine the size and location
  319. //     of the button associated with the caption.
  320. // Returns:
  321. //     The size and location of the caption button or an empty rect
  322. //     if no button is defined.
  323. //-----------------------------------------------------------------------
  324. virtual CRect GetButtonRect() const;
  325. //{{AFX_CODEJOCK_PRIVATE
  326. DECLARE_MESSAGE_MAP()
  327. //{{AFX_MSG(CXTCaption)
  328. afx_msg void OnPaint();
  329. afx_msg LRESULT OnPrintClient(WPARAM wParam, LPARAM /*lParam*/);
  330. afx_msg BOOL OnEraseBkgnd(CDC* pDC);
  331. afx_msg void OnWindowPosChanged(WINDOWPOS FAR* lpwndpos);
  332. afx_msg void OnSysColorChange();
  333. afx_msg void OnSize(UINT nType, int cx, int cy);
  334. afx_msg void OnCaptButton();
  335. afx_msg void OnPushPinButton();
  336. afx_msg void OnPushPinCancel();
  337. //}}AFX_MSG
  338. //}}AFX_CODEJOCK_PRIVATE
  339. private:
  340. BOOL Create(LPCTSTR lpszClassName, LPCTSTR lpszWindowName, DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID, CCreateContext* pContext = NULL);
  341. BOOL Create(LPCTSTR lpszText, DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID = 0xffff);
  342. public:
  343. int                 m_nBorder;      // Size in pixels for the caption border.
  344. COLORREF            m_clrBorder;    // An RGB value that represents the user defined border color.
  345. COLORREF            m_clrFace;      // An RGB value that represents the user defined background color.
  346. COLORREF            m_clrText;      // An RGB value that represents the user defined font color.
  347. protected:
  348. int                 m_nOffset;      // Size in pixels that the child window should leave for its caption area.
  349. bool                m_bUserColors;  // true if the user has specified caption colors other than the default.
  350. bool                m_bAppCaption;  // true if the caption is used as the application's primary caption.
  351. CWnd*               m_pChildWnd;    // A CWnd pointer that represents the child window displayed in the popup window.
  352. CWnd*               m_pParentView;  // A CWnd pointer that represents the child window's parent view.
  353. CWnd*               m_pSplitterWnd; // A CWnd pointer that represents the splitter window. It is used to track size changes.
  354. CSize               m_sizeIcon;     // Width and height of the caption icon area.
  355. CRect               m_rcChild;      // Size of the child window displayed in the popup.
  356. CRect               m_rcParent;     // Size of the child's parent view.
  357. CRect               m_rcSplitter;   // Size of the splitter window.
  358. DWORD               m_dwExStyle;    // Border style bits, either CPWS_EX_GROOVE_EDGE | CPWS_EX_RAISED_EDGE.
  359. HICON               m_hIcon;        // User defined icon handle. The default value is NULL.
  360. CString             m_strCaption;   // Text that will be displayed in the caption.
  361. CImageList          m_ilButton;     // Image list used to create the close button icon.
  362. CXTCaptionButton    m_btnCaption;   // Button used to 'tack' the popup window back in place.
  363. CXTCaptionPopupWnd* m_pPopupWnd;    // Points to the popup window.
  364. friend class CXTCaptionButton;
  365. friend class CXTCaptionButtonTheme;
  366. friend class CXTCaptionTheme;
  367. };
  368. //////////////////////////////////////////////////////////////////////
  369. AFX_INLINE CXTCaptionButton& CXTCaption::GetCaptionButton() {
  370. ASSERT(::IsWindow(m_btnCaption.m_hWnd)); return m_btnCaption;
  371. }
  372. AFX_INLINE DWORD CXTCaption::GetCaptionStyle() const {
  373. return m_dwExStyle;
  374. }
  375. AFX_INLINE const CString& CXTCaption::GetCaptionText() {
  376. return m_strCaption;
  377. }
  378. AFX_INLINE BOOL CXTCaption::HasCloseButton() const {
  379. return ((m_dwExStyle & CPWS_EX_CLOSEBUTTON) == CPWS_EX_CLOSEBUTTON);
  380. }
  381. AFX_INLINE BOOL CXTCaption::Create(LPCTSTR lpszClassName, LPCTSTR lpszWindowName, DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID, CCreateContext* pContext) {
  382. return CWnd::Create(lpszClassName, lpszWindowName, dwStyle, rect, pParentWnd, nID, pContext);
  383. }
  384. AFX_INLINE BOOL CXTCaption::Create(LPCTSTR lpszText, DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID) {
  385. return CStatic::Create(lpszText, dwStyle, rect, pParentWnd, nID);
  386. }
  387. #endif // #if !defined(__XTCAPTION_H__)