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

对话框与窗口

开发平台:

Visual C++

  1. // XTPStatusBar.h : interface for the CXTPStatusBar class.
  2. //
  3. // This file is a part of the XTREME COMMANDBARS MFC class library.
  4. // (c)1998-2008 Codejock Software, All Rights Reserved.
  5. //
  6. // THIS SOURCE FILE IS THE PROPERTY OF CODEJOCK SOFTWARE AND IS NOT TO BE
  7. // RE-DISTRIBUTED BY ANY MEANS WHATSOEVER WITHOUT THE EXPRESSED WRITTEN
  8. // CONSENT OF CODEJOCK SOFTWARE.
  9. //
  10. // THIS SOURCE CODE CAN ONLY BE USED UNDER THE TERMS AND CONDITIONS OUTLINED
  11. // IN THE XTREME TOOLKIT PRO LICENSE AGREEMENT. CODEJOCK SOFTWARE GRANTS TO
  12. // YOU (ONE SOFTWARE DEVELOPER) THE LIMITED RIGHT TO USE THIS SOFTWARE ON A
  13. // SINGLE COMPUTER.
  14. //
  15. // CONTACT INFORMATION:
  16. // support@codejock.com
  17. // http://www.codejock.com
  18. //
  19. /////////////////////////////////////////////////////////////////////////////
  20. //{{AFX_CODEJOCK_PRIVATE
  21. #if !defined(__XTPSTATUSBAR_H__)
  22. #define __XTPSTATUSBAR_H__
  23. //}}AFX_CODEJOCK_PRIVATE
  24. #if _MSC_VER >= 1000
  25. #pragma once
  26. #endif // _MSC_VER >= 1000
  27. class CXTPCommandBars;
  28. class CXTPPaintManager;
  29. class CXTPStatusBar;
  30. class CXTPImageManagerIcon;
  31. class CXTPImageManager;
  32. class CXTPToolTipContext;
  33. class CXTPPopupBar;
  34. class CXTPMarkupUIElement;
  35. class CXTPMarkupContext;
  36. #include "XTPScrollBar.h"
  37. #include "XTPControlProgress.h"
  38. //===========================================================================
  39. // Summary:
  40. //     CXTPStatusBarPane is a CCmdTarget derived class. It represents single pane of status bar
  41. //===========================================================================
  42. class _XTP_EXT_CLASS CXTPStatusBarPane : public CXTPCmdTarget
  43. {
  44. private:
  45. DECLARE_DYNAMIC(CXTPStatusBarPane)
  46. public:
  47. //-----------------------------------------------------------------------
  48. // Summary:
  49. //     Constructs a CXTPStatusBarPane object
  50. //-----------------------------------------------------------------------
  51. CXTPStatusBarPane();
  52. //-----------------------------------------------------------------------
  53. // Summary:
  54. //     Destroys a CXTPStatusBarPane object, handles cleanup and deallocation
  55. //-----------------------------------------------------------------------
  56. virtual ~CXTPStatusBarPane();
  57. public:
  58. //-----------------------------------------------------------------------
  59. // Summary:
  60. //     Call this member to set the text caption that is displayed
  61. //     in this pane.
  62. // Parameters:
  63. //     lpszText - Text caption of the pane.
  64. // See Also: GetText
  65. //-----------------------------------------------------------------------
  66. void SetText(LPCTSTR lpszText);
  67. void SetCaption(LPCTSTR lpszCaption);
  68. CString GetCaption() const;
  69. void SetValue(LPCTSTR lpszValue);
  70. CString GetValue() const;
  71. //-----------------------------------------------------------------------
  72. // Summary:
  73. //     Call this member to get the text caption to the pane.
  74. // Returns:
  75. //     Text caption of pane.  This is the text displayed in the pane
  76. // See Also: SetText
  77. //-----------------------------------------------------------------------
  78. CString GetText() const;
  79. //-----------------------------------------------------------------------
  80. // Summary:
  81. //     Call this member to set the width of this pane.
  82. // Parameters:
  83. //     nWidth - new width to be set
  84. // See Also: GetWidth
  85. //-----------------------------------------------------------------------
  86. void SetWidth(int nWidth);
  87. //-----------------------------------------------------------------------
  88. // Summary:
  89. //     Call this member to get the width of the pane.
  90. // Returns:
  91. //     Current width of the pane
  92. // See Also: SetWidth
  93. //-----------------------------------------------------------------------
  94. virtual int GetWidth();
  95. //-----------------------------------------------------------------------
  96. // Summary:
  97. //     Call this member function to set the style of a status bar's pane.
  98. //     A pane's style determines how the pane appears.
  99. // Parameters:
  100. //     nStyle - Style of the pane whose style is to be set
  101. //-----------------------------------------------------------------------
  102. void SetStyle(UINT nStyle);
  103. //-----------------------------------------------------------------------
  104. // Summary:
  105. //     Call this member function to get the style of a status bar's pane.
  106. // Returns:
  107. //     Style of the indicator pane.
  108. //-----------------------------------------------------------------------
  109. UINT GetStyle() const;
  110. //-----------------------------------------------------------------------
  111. // Summary:
  112. //     Call this member function to get the ID of a status bar's pane.
  113. // Returns:
  114. //     ID of the indicator pane.
  115. //-----------------------------------------------------------------------
  116. UINT GetID() const;
  117. //-----------------------------------------------------------------------
  118. // Summary:
  119. //     Call this member function to get the index of a status bar's pane.
  120. // Returns:
  121. //     Index of the indicator pane.
  122. //-----------------------------------------------------------------------
  123. int GetIndex() const;
  124. //-----------------------------------------------------------------------
  125. // Summary:
  126. //     Call this member function to remove the pane
  127. //-----------------------------------------------------------------------
  128. void Remove();
  129. //-----------------------------------------------------------------------
  130. // Summary:
  131. //     Call this member to determine if the pane is visible.
  132. // Returns:
  133. //     TRUE if the tab is visible, FALSE otherwise.
  134. // See Also: SetVisible
  135. //-----------------------------------------------------------------------
  136. BOOL IsVisible() const;
  137. //-----------------------------------------------------------------------
  138. // Summary:
  139. //     Call this member to hide or show the pane.
  140. // Parameters:
  141. //     bVisible - TRUE to show the tab, FALSE to hide the tab.
  142. // See Also: IsVisible
  143. //-----------------------------------------------------------------------
  144. void SetVisible(BOOL bVisible);
  145. //-----------------------------------------------------------------------
  146. // Summary:
  147. //     Call this member function to set the color of an item text.
  148. // Parameters:
  149. //     clrText -  COLORREF object that represents the color of an item
  150. //     text.
  151. //-----------------------------------------------------------------------
  152. void SetTextColor(COLORREF clrText);
  153. //-----------------------------------------------------------------------
  154. // Summary:
  155. //     Call this member function to get the color of an item text.
  156. // Returns:
  157. //     A COLORREF object that represents the color of an item text.
  158. //-----------------------------------------------------------------------
  159. COLORREF GetTextColor() const;
  160. //-----------------------------------------------------------------------
  161. // Summary:
  162. //     Call this member function to set the color of an item background.
  163. // Parameters:
  164. //     clrBackground -  COLORREF object that represents the background color of an item
  165. //     text.
  166. //-----------------------------------------------------------------------
  167. void SetBackgroundColor(COLORREF clrBackground);
  168. //-----------------------------------------------------------------------
  169. // Summary:
  170. //     Call this member to get the background color of an item.
  171. // Returns:
  172. //     The background color of a item.
  173. //-----------------------------------------------------------------------
  174. COLORREF GetBackgroundColor() const;
  175. //-----------------------------------------------------------------------
  176. // Summary:
  177. //     Call this member function to set the font of an item text.
  178. // Parameters:
  179. //     pFntText -  point to CFont object.
  180. //     pLogfText -  point to LOGFONT structure.
  181. //-----------------------------------------------------------------------
  182. void SetTextFont(CFont* pFntText);
  183. void SetTextFont(PLOGFONT pLogfText); // <combine CXTPStatusBarPane::SetTextFont@CFont* >
  184. //-----------------------------------------------------------------------
  185. // Summary:
  186. //     Call this member function to set the font of an item text.
  187. // Returns:
  188. //     Pointer to CFont object.
  189. //-----------------------------------------------------------------------
  190. virtual CFont* GetTextFont();
  191. //-----------------------------------------------------------------------
  192. // Summary:
  193. //     Retrieves icon index.
  194. // Returns:
  195. //     Icon index.
  196. // See Also: SetIconIndex
  197. //-----------------------------------------------------------------------
  198. int GetIconIndex() const;
  199. //-----------------------------------------------------------------------
  200. // Summary:
  201. //     Call this method to set icon index of item.
  202. // Parameters:
  203. //     nIconIndex - Icon index to be set.
  204. // See Also: GetIconIndex
  205. //-----------------------------------------------------------------------
  206. void SetIconIndex(int nIconIndex);
  207. //-----------------------------------------------------------------------
  208. // Summary:
  209. //     Call this member function to set the alignment of an item text.
  210. // Parameters:
  211. //     nAlign -  The alignment style of an item text.
  212. //-----------------------------------------------------------------------
  213. void SetTextAlignment(int nAlign);
  214. //-----------------------------------------------------------------------
  215. // Summary:
  216. //     Call this member function to get the alignment of an item text.
  217. // Returns:
  218. //     The alignment style of an item text.
  219. //-----------------------------------------------------------------------
  220. int GetTextAlignment() const;
  221. //-----------------------------------------------------------------------
  222. // Summary:
  223. //     Call this member to set the tooltip for this pane.  This is the
  224. //     text that will be displayed when the mouse pointer is positioned
  225. //     over the pane.
  226. // Parameters: lpszTooltip - Tooltip to set for this tab.
  227. // See Also: GetTooltip
  228. //-----------------------------------------------------------------------
  229. void SetTooltip(LPCTSTR lpszTooltip);
  230. //-----------------------------------------------------------------------
  231. // Summary:
  232. //     Call this member to get the tooltip displayed when the mouse
  233. //     pointer is positioned over the pane.
  234. // Returns:
  235. //     The tooltip displayed when the mouse if over the pane.
  236. // See Also: SetTooltip
  237. //-----------------------------------------------------------------------
  238. CString GetTooltip() const;
  239. //-----------------------------------------------------------------------
  240. // Summary:
  241. //     Fits the width of the pane to the its text width.
  242. //-----------------------------------------------------------------------
  243. void BestFit();
  244. int GetBestFit();
  245. void SetBeginGroup(BOOL bBeginGroup = TRUE);
  246. BOOL GetBeginGroup() const;
  247. //-----------------------------------------------------------------------
  248. // Summary:
  249. //     Call this member function to get parent status bar object
  250. // Returns:
  251. //     Pointer to parent status bar object
  252. //-----------------------------------------------------------------------
  253. CXTPStatusBar* GetStatusBar() const;
  254. //-----------------------------------------------------------------------
  255. // Summary:
  256. //     This method is called to get image of the pane
  257. // Returns:
  258. //     CXTPImageManagerIcon Pointer to be drawn.
  259. //-----------------------------------------------------------------------
  260. virtual CXTPImageManagerIcon* GetImage() const;
  261. //-----------------------------------------------------------------------
  262. // Summary:
  263. //     Returns margins for pane entry
  264. // See Also: SetMargins
  265. //-----------------------------------------------------------------------
  266. CRect GetMargins() const;
  267. CRect GetPadding() const;
  268. //-----------------------------------------------------------------------
  269. // Summary:
  270. //     Call this method to set margins for pane
  271. // Parameters:
  272. //     nLeft - Left margin
  273. //     nTop - Top margin
  274. //     nRight - Right margin
  275. //     nBottom - Bottom margin
  276. // See Also: GetMargins
  277. //-----------------------------------------------------------------------
  278. void SetMargins(int nLeft, int nTop, int nRight, int nBottom);
  279. void SetPadding(int nLeft, int nTop, int nRight, int nBottom);
  280. void SetButton(BOOL bButton = TRUE);
  281. BOOL IsButton() const;
  282. BOOL IsEnabled() const;
  283. void SetEnabled(BOOL bEnabled);
  284. BOOL IsHighlighted() const;
  285. BOOL IsPressed() const;
  286. void SetCustomizationVisible(BOOL bVisible);
  287. BOOL GetCustomizationVisible() const;
  288. //-----------------------------------------------------------------------
  289. // Summary:
  290. //     Call this member function to determine if the pane button state is
  291. //     checked.
  292. // Returns:
  293. //     TRUE if the pane button is checked, otherwise FALSE.
  294. //-----------------------------------------------------------------------
  295. BOOL IsChecked() const;
  296. void SetChecked(BOOL bChecked);
  297. //-----------------------------------------------------------------------
  298. // Summary:
  299. //     Call this member function to determine if the pane has borders
  300. //     enabled.
  301. // Returns:
  302. //     TRUE if the pane has borders, otherwise FALSE. If the pane is a
  303. //     button, the return value is always FALSE since buttons will handle
  304. //     drawing their own borders.
  305. // See Also:
  306. //     IsButton
  307. //-----------------------------------------------------------------------
  308. BOOL HasBorders() const;
  309. void ShowBorders(BOOL bShowBorders);
  310. void Redraw() const;
  311. CRect GetRect() const;
  312. CXTPMarkupUIElement* GetMarkupUIElement() const;
  313. protected:
  314. //-----------------------------------------------------------------------
  315. // Summary:
  316. //     This method is called to draw pane item. Override it to draw custom pane.
  317. // Parameters:
  318. //     pDC    - Pointer to a valid device context
  319. //     rcItem - Item rectangle
  320. //-----------------------------------------------------------------------
  321. virtual void OnDraw(CDC* pDC, CRect rcItem);
  322. virtual void OnLButtonDown(CPoint point);
  323. virtual void OnMouseMove(CPoint point);
  324. virtual INT_PTR OnToolHitTest(CPoint point, TOOLINFO* pTI) const;
  325. protected:
  326. UINT    m_nID;          // IDC of indicator: 0 => normal text area.
  327. int     m_cxText;       // Width of the string area in pixels. On both sides there is a 3 pixel gap and a 1 pixel border, making a pane 6 pixels wider.
  328. UINT    m_nStyle;       // Style flags (SBPS_*).
  329. CString m_strText;      // Text in the pane.
  330. DWORD m_dwHideFlags; // TRUE if pane is visible
  331. COLORREF m_clrText;     // Text color
  332. COLORREF m_clrBackground;       // Background color
  333. CString m_strToolTip;   // Tooltip text for the item..
  334. CRect m_rcPane;
  335. HWND m_hWndPane;        // Child handle
  336. BOOL m_bAutoDeleteWnd;  // TRUE to auto delete child.
  337. int m_nAlignment;       // Alignment of the item.
  338. CXTPStatusBar* m_pStatusBar;    // Parent StatusBar object
  339. int m_nIndex;           // Index of the item
  340. CFont m_fntText;        // Font of an item text
  341. int m_nIconIndex;       // Icon index of the pane
  342. CRect m_rcPadding;      // Margins of the pane
  343. CRect m_rcMargins;      // Margins of the pane
  344. BOOL m_bButton;         // TRUE if pane is clickable button
  345. BOOL m_bPressed;        // TRUE if button was pressed
  346. CXTPMarkupUIElement* m_pMarkupUIElement;
  347. BOOL m_bBeginGroup;
  348. CString m_strCaption;
  349. CString m_strValue;
  350. int m_nBestFit;
  351. friend class CXTPStatusBar;
  352. };
  353. //===========================================================================
  354. // Summary:
  355. //     CXTPStatusBar is a CControlBar derived class.
  356. //===========================================================================
  357. class _XTP_EXT_CLASS CXTPStatusBar : public CControlBar
  358. {
  359. //{{AFX_CODEJOCK_PRIVATE
  360. DECLARE_DYNAMIC(CXTPStatusBar)
  361. //}}AFX_CODEJOCK_PRIVATE
  362. private:
  363. class CStatusCmdUI;
  364. class CControlCustomization;
  365. public:
  366. //-----------------------------------------------------------------------
  367. // Summary:
  368. //     Constructs a CXTPStatusBar object
  369. //-----------------------------------------------------------------------
  370. CXTPStatusBar();
  371. //-----------------------------------------------------------------------
  372. // Summary:
  373. //     Destroys a CXTPStatusBar object, handles cleanup and deallocation
  374. //-----------------------------------------------------------------------
  375. virtual ~CXTPStatusBar();
  376. public:
  377. //-----------------------------------------------------------------------
  378. // Summary:
  379. //     Creates a status bar (a child window) and associates it with the CStatusBar object.
  380. //     Also sets the initial font and sets the status bar's height to a default value.
  381. // Parameters:
  382. //     pParentWnd - Pointer to the CWnd object whose Windows window is the parent of the status bar.
  383. //     dwStyle    - The status-bar style. In addition to the standard Windows styles, these styles are supported
  384. //     nID        - The toolbar's child-window ID
  385. // Returns:
  386. //     Nonzero if successful; otherwise 0.
  387. //-----------------------------------------------------------------------
  388. BOOL Create(CWnd* pParentWnd, DWORD dwStyle = WS_CHILD | WS_VISIBLE | CBRS_BOTTOM | WS_CLIPCHILDREN | WS_CLIPSIBLINGS, UINT nID = AFX_IDW_STATUS_BAR);
  389. public:
  390. //-----------------------------------------------------------------------
  391. // Summary:
  392. //     Sets each indicator's ID to the value specified by the corresponding
  393. //     element of the array lpIDArray, loads the string resource specified
  394. //     by each ID, and sets the indicator's text to the string.
  395. // Parameters:
  396. //     lpIDArray - Pointer to an array of IDs.
  397. //     nIDCount  - Number of elements in the array pointed to by lpIDArray.
  398. // Returns:
  399. //     TRUE if successful; otherwise returns FALSE
  400. //-----------------------------------------------------------------------
  401. BOOL SetIndicators (const UINT* lpIDArray, int nIDCount);
  402. //-----------------------------------------------------------------------
  403. // Summary:
  404. //     Call this member to set the command bar's object.
  405. // Parameters:
  406. //     pCommandBars - CXTPCommandBars to be set.
  407. //-----------------------------------------------------------------------
  408. void SetCommandBars(CXTPCommandBars* pCommandBars);
  409. //-----------------------------------------------------------------------
  410. // Summary:
  411. //     Retrieves the paint manager.
  412. // Returns:
  413. //     A pointer to a CXTPPaintManager object.
  414. //-----------------------------------------------------------------------
  415. CXTPPaintManager* GetPaintManager() const;
  416. public:
  417. //-----------------------------------------------------------------------
  418. // Summary:
  419. //     This member function is called by the status bar to reposition pane
  420. //     item controls.
  421. //-----------------------------------------------------------------------
  422. void PositionControls();
  423. //-----------------------------------------------------------------------
  424. // Summary:
  425. //     Call this member function to add a control to an indicator pane.
  426. // Parameters:
  427. //     pWnd        - Points to a control window.
  428. //     nID         - ID of the indicator pane.
  429. //     bAutoDelete - TRUE if the control is to be deleted when destroyed.
  430. // Returns:
  431. //     TRUE if successful, otherwise returns FALSE.
  432. //-----------------------------------------------------------------------
  433. BOOL AddControl(CWnd* pWnd, UINT nID, BOOL bAutoDelete = TRUE);
  434. //-----------------------------------------------------------------------
  435. // Summary:
  436. //     Call this member function to set the width for an indicator pane.
  437. // Parameters:
  438. //     nIndex - Index of the indicator pane.
  439. //     cxText - New width for the indicator pane.
  440. //-----------------------------------------------------------------------
  441. void SetPaneWidth(int nIndex, int cxText);
  442. //-----------------------------------------------------------------------
  443. // Summary:
  444. //     Call this member function to add an indicator pane to the status bar.
  445. // Parameters:
  446. //     nID    - ID of the indicator pane.
  447. //     nIndex - Index of the indicator pane.
  448. //     pPane  - New CXTPStatusBarPane object
  449. // Returns:
  450. //     CXTPStatusBarPane pointer if successful, otherwise returns NULL.
  451. //-----------------------------------------------------------------------
  452. CXTPStatusBarPane* AddIndicator(UINT nID, int nIndex = -1);
  453. CXTPStatusBarPane* AddIndicator(CXTPStatusBarPane* pPane, UINT nID, int nIndex = -1);  // <combine CXTPStatusBar::AddIndicator@UINT@int>
  454. //-----------------------------------------------------------------------
  455. // Summary:
  456. //     Call this member function to remove an indicator pane from the status bar.
  457. // Parameters:
  458. //     nID - ID of the indicator pane.
  459. // Returns:
  460. //     TRUE if successful, otherwise returns FALSE.
  461. //-----------------------------------------------------------------------
  462. BOOL RemoveIndicator(UINT nID);
  463. //-----------------------------------------------------------------------
  464. // Summary:
  465. //     Call this member function to return the number of panes that are created
  466. //     for the status bar.
  467. // Returns:
  468. //     An integer value that represents the number of panes for the status bar.
  469. //-----------------------------------------------------------------------
  470. int GetPaneCount() const;
  471. //-----------------------------------------------------------------------
  472. // Summary:
  473. //     Calculates total number of visible panes.
  474. // Returns:
  475. //     Total number of panes currently visible.
  476. //-----------------------------------------------------------------------
  477. int GetVisiblePaneCount() const;
  478. //-----------------------------------------------------------------------
  479. // Summary:
  480. //     Call this member function to get the pane information for the given index.
  481. // Parameters:
  482. //     nIndex - Index of the indicator pane.
  483. // Returns:
  484. //     A pointer to an CXTPStatusBarPane class.
  485. //-----------------------------------------------------------------------
  486. CXTPStatusBarPane* GetPane(int nIndex) const;
  487. //-----------------------------------------------------------------------
  488. // Summary:
  489. //     Call this member function to find the pane for the given Identifier.
  490. // Parameters:
  491. //     nID - Identifier of the indicator pane.
  492. // Returns:
  493. //     A pointer to an CXTPStatusBarPane class.
  494. //-----------------------------------------------------------------------
  495. CXTPStatusBarPane* FindPane(UINT nID) const;
  496. //-----------------------------------------------------------------------
  497. // Summary:
  498. //     Call this member function to remove all indicators.
  499. //-----------------------------------------------------------------------
  500. void RemoveAll();
  501. //-----------------------------------------------------------------------
  502. // Summary:
  503. //     Call this member function to remove an indicator pane from the status bar.
  504. // Parameters:
  505. //     nIndex - Index of the indicator pane.
  506. // Returns:
  507. //     TRUE if successful, otherwise returns FALSE.
  508. //-----------------------------------------------------------------------
  509. BOOL RemoveAt(int nIndex);
  510. //-----------------------------------------------------------------------
  511. // Summary:
  512. //     Call this member to retrieve the image manager of the image manager.
  513. // Returns:
  514. //     A pointer to a CXTPImageManager object
  515. //-----------------------------------------------------------------------
  516. CXTPImageManager* GetImageManager() const;
  517. //-----------------------------------------------------------------------
  518. // Summary:
  519. //     Call this function to determine which pane, if any, is at the
  520. //     specified screen position.
  521. // Parameters:
  522. //     pt - Point to be tested.
  523. //     lpRect - Returns rectangle of the item under point pt.
  524. // Returns:
  525. //     CXTPStatusBarPane pointer, or returns NULL if no pane is
  526. //     at the specified position.
  527. //-----------------------------------------------------------------------
  528. CXTPStatusBarPane* HitTest(CPoint pt, CRect* lpRect = NULL) const;
  529. public:
  530. //-----------------------------------------------------------------------
  531. // Summary:
  532. //     Call this method to enable/disable customization of the statusbar
  533. // Parameters:
  534. //     bEnable - TRUE to enable customization.
  535. //-----------------------------------------------------------------------
  536. void EnableCustomization(BOOL bEnable = TRUE);
  537. void LoadState(LPCTSTR lpszProfileName);
  538. void SaveState(LPCTSTR lpszProfileName);
  539. public:
  540. //-----------------------------------------------------------------------
  541. // Summary:
  542. //     Call this member to draw disabled text.
  543. // Parameters:
  544. //     bDraw - TRUE to draw disabled text, FALSE otherwise.
  545. //-----------------------------------------------------------------------
  546. void SetDrawDisabledText(BOOL bDraw);
  547. //-----------------------------------------------------------------------
  548. // Summary:
  549. //     Call this member to determine if paint manager draw disabled text.
  550. //-----------------------------------------------------------------------
  551. BOOL GetDrawDisabledText() const;
  552. //-----------------------------------------------------------------------
  553. // Summary:
  554. //     Call this method to get tooltip context pointer.
  555. //-----------------------------------------------------------------------
  556. CXTPToolTipContext* GetToolTipContext() const;
  557. public:
  558. //-----------------------------------------------------------------------
  559. // Summary:
  560. //     This method is called to draw a single pane of the status bar.
  561. // Parameters:
  562. //     pDC    - Pointer to a valid device context
  563. //     nIndex - Index of the pane to draw.
  564. //     rcItem - Bounding rectangle of the pane
  565. //-----------------------------------------------------------------------
  566. virtual void DrawPaneEntry(CDC* pDC, int nIndex, CRect rcItem);
  567. public:
  568. //-----------------------------------------------------------------------
  569. // Summary:
  570. //     Call this function to create a status bar
  571. // Parameters:
  572. //     pParentWnd - Pointer to the CWnd object whose Windows window is the parent of the status bar.
  573. //     dwCtrlStyle - Additional styles for the creation of the embedded CStatusBarCtrl object.
  574. //     dwStyle - The status-bar style
  575. //     nID - The status bar's child-window ID.
  576. // Returns: Nonzero if successful; otherwise 0.
  577. //-----------------------------------------------------------------------
  578. BOOL CreateEx(CWnd* pParentWnd, DWORD dwCtrlStyle = 0,
  579. DWORD dwStyle = WS_CHILD | WS_VISIBLE | CBRS_BOTTOM,
  580. UINT nID = AFX_IDW_STATUS_BAR);
  581. //-----------------------------------------------------------------------
  582. // Summary:
  583. //     Gets the indicator index for a given ID. The index of the first indicator is 0
  584. // Parameters:
  585. //      nIDFind - String ID of the indicator whose index is to be retrieved
  586. // Returns:
  587. //      The index of the indicator if successful; -1 if not successful.
  588. // See Also: GetItemID
  589. //-----------------------------------------------------------------------
  590. int CommandToIndex(UINT nIDFind) const;
  591. //-----------------------------------------------------------------------
  592. // Summary:
  593. //     Returns the ID of the indicator specified by nIndex
  594. // Parameters:
  595. //     nIndex - Index of the indicator whose ID is to be retrieved.
  596. // Returns:
  597. //     The ID of the indicator specified by nIndex.
  598. // See Also: CommandToIndex
  599. //-----------------------------------------------------------------------
  600. UINT GetItemID(int nIndex) const;
  601. //-----------------------------------------------------------------------
  602. // Summary:
  603. //     Copies the coordinates of the indicator specified by nIndex into the structure pointed to by lpRect.
  604. //     Coordinates are in pixels relative to the upper-left corner of the status bar.
  605. // Parameters:
  606. //     nIndex - Index of the indicator whose rectangle coordinates are to be retrieved.
  607. //     lpRect - Points to aRECT structure or a CRect object that will receive the coordinates of the indicator specified by nIndex.
  608. // See Also: GetPaneInfo, CommandToIndex
  609. //-----------------------------------------------------------------------
  610. void GetItemRect(int nIndex, LPRECT lpRect) const;
  611. //-----------------------------------------------------------------------
  612. // Summary:
  613. //     Call this member function to retrieve the text that appears in a status-bar pane.
  614. //     The second form of this member function fills a CString object with the string text.
  615. // Parameters:
  616. //     nIndex  - Index of the pane whose text is to be retrieved
  617. //     rString - A reference to a CString object that contains the text to be retrieved.
  618. // See Also: SetPaneText
  619. //-----------------------------------------------------------------------
  620. CString GetPaneText(int nIndex) const;
  621. void GetPaneText(int nIndex, CString& rString) const; // <combine CXTPStatusBar::GetPaneText@int@const>
  622. //-----------------------------------------------------------------------
  623. // Summary:
  624. //     Sets the pane text to the string pointed to by lpszNewText.
  625. // Parameters:
  626. //     nIndex - Index of the pane whose text is to be set.
  627. //     lpszNewText - Pointer to the new pane text
  628. //     bUpdate - If TRUE, the pane is invalidated after the text is set.
  629. // Returns:
  630. //     Nonzero if successful; otherwise 0.
  631. // See Also: GetPaneText
  632. //-----------------------------------------------------------------------
  633. BOOL SetPaneText(int nIndex, const CString& lpszNewText);
  634. //-----------------------------------------------------------------------
  635. // Summary:
  636. //     Sets nID, nStyle, and cxWidth to the ID, style, and width of the indicator
  637. //     pane at the location specified by nIndex.
  638. // Parameters:
  639. //     nIndex  - Index of the pane whose information is to be retrieved.
  640. //     nID     - Reference to a UINT that is set to the ID of the pane
  641. //     nStyle  - Reference to a UINT that is set to the style of the pane.
  642. //     cxWidth - Reference to an integer that is set to the width of the pane
  643. // See Also: SetPaneInfo, GetItemRect
  644. //-----------------------------------------------------------------------
  645. void GetPaneInfo(int nIndex, UINT& nID, UINT& nStyle, int& cxWidth) const;
  646. //-----------------------------------------------------------------------
  647. // Summary:
  648. //     Sets the specified indicator pane to a new ID, style, and width.
  649. // Parameters:
  650. //     nIndex  - Index of the indicator pane whose style is to be set.
  651. //     nID     - New ID for the indicator pane
  652. //     nStyle  - New style for the indicator pane
  653. //     cxWidth - New width for the indicator pane
  654. // See Also: GetPaneInfo
  655. //-----------------------------------------------------------------------
  656. void SetPaneInfo(int nIndex, UINT nID, UINT nStyle, int cxWidth);
  657. //-----------------------------------------------------------------------
  658. // Summary:
  659. //     Call this member function to retrieve the style of a status bar's pane. A pane's style determines how the pane appears.
  660. // Parameters:
  661. //     nIndex - Index of the pane whose style is to be retrieved.
  662. // Returns:
  663. //     The style of the status-bar pane specified by nIndex
  664. // See Also: SetPaneStyle
  665. //-----------------------------------------------------------------------
  666. UINT GetPaneStyle(int nIndex) const;
  667. //-----------------------------------------------------------------------
  668. // Summary:
  669. //     Call this member function to set the style of a status bar's pane. A pane's style determines how the pane appears.
  670. // Parameters:
  671. //     nIndex - Index of the pane whose style is to be set.
  672. //     nStyle - Style of the pane whose style is to be set
  673. // See Also: GetPaneStyle
  674. //-----------------------------------------------------------------------
  675. void SetPaneStyle(int nIndex, UINT nStyle);
  676. //-----------------------------------------------------------------------
  677. // Summary:
  678. //     This member function allows direct access to the underlying common control
  679. // Returns:
  680. //     Contains a reference to a CStatusBarCtrl object.
  681. //-----------------------------------------------------------------------
  682. CStatusBarCtrl& GetStatusBarCtrl() const;
  683. //-----------------------------------------------------------------------
  684. // Summary:
  685. //     Call this method to set font for status bar
  686. // Parameters:
  687. //      pFont - Font to set
  688. //      bRedraw - TRUE to redraw status bar
  689. //-----------------------------------------------------------------------
  690. void SetFont(CFont* pFont, BOOL bRedraw = TRUE);
  691. CFont* GetFont();
  692. void SetRibbonDividerIndex(int nIndex);
  693. int GetRibbonDividerIndex() const;
  694. void UpdateAllPanes(BOOL bUpdateRects, BOOL bUpdateText);
  695. void EnableMarkup(BOOL bEnableMarkup = TRUE);
  696. CXTPMarkupContext* GetMarkupContext() const;
  697. //{{AFX_CODEJOCK_PRIVATE
  698. #if _MSC_VER > 1100
  699. void SetBorders(LPCRECT lpRect);
  700. void SetBorders(int cxLeft = 0, int cyTop = 0, int cxRight = 0, int cyBottom = 0);
  701. #endif
  702. //}}AFX_CODEJOCK_PRIVATE
  703. protected:
  704. //-----------------------------------------------------------------------
  705. // Summary:
  706. //     Draws the stretch gripper of the status bar.
  707. // Parameters:
  708. //     pDC      - Pointer to a valid device context.
  709. //     rcClient - Client rectangle.
  710. //-----------------------------------------------------------------------
  711. virtual void DrawStretch(CDC* pDC, CRect& rcClient);
  712. protected:
  713. //{{AFX_CODEJOCK_PRIVATE
  714. virtual CSize CalcFixedLayout(BOOL bStretch, BOOL bHorz);
  715. BOOL PreCreateWindow(CREATESTRUCT& cs);
  716. void CalcInsideRect(CRect& rect, BOOL bHorz) const;
  717. virtual void OnBarStyleChange(DWORD dwOldStyle, DWORD dwNewStyle);
  718. #ifdef _DEBUG
  719. virtual void AssertValid() const;
  720. virtual void Dump(CDumpContext& dc) const;
  721. void EnableDocking(DWORD dwDockStyle);
  722. #endif
  723. public:
  724. virtual void RecalcLayout();
  725. virtual void OnPaneClick(CXTPStatusBarPane* pPane);
  726. virtual void OnSwitchPaneClick(CXTPStatusBarPane* pPane, long Id);
  727. virtual CXTPPopupBar* CXTPStatusBar::GetStatusBarPopup();
  728. //}}AFX_CODEJOCK_PRIVATE
  729. protected:
  730. //{{AFX_CODEJOCK_PRIVATE
  731. DECLARE_MESSAGE_MAP()
  732. virtual void OnUpdateCmdUI(CFrameWnd* pTarget, BOOL bDisableIfNoHndler);
  733. INT_PTR OnToolHitTest(CPoint point, TOOLINFO* pTI) const;
  734. virtual BOOL OnWndMsg(UINT message, WPARAM wParam, LPARAM lParam, LRESULT* pResult);
  735. //{{AFX_MSG(CXTPStatusBar)
  736. public:
  737. afx_msg void OnPaint();
  738. afx_msg void OnDraw(CDC* pDC);
  739. afx_msg LRESULT OnPrintClient(WPARAM wParam, LPARAM /*lParam*/);
  740. afx_msg BOOL OnEraseBkgnd(CDC* pDC);
  741. afx_msg void OnSize(UINT nType, int cx, int cy);
  742. afx_msg int OnCreate(LPCREATESTRUCT lpcs);
  743. afx_msg LRESULT OnIdleUpdateCmdUI (WPARAM wParam, LPARAM lParam);
  744. protected:
  745. afx_msg LRESULT OnNcHitTest(CPoint);
  746. afx_msg void OnNcCalcSize(BOOL, NCCALCSIZE_PARAMS*);
  747. afx_msg void OnNcPaint();
  748. afx_msg void OnWindowPosChanging(LPWINDOWPOS);
  749. afx_msg LRESULT OnSetText(WPARAM wParam, LPARAM lParam);
  750. afx_msg LRESULT OnGetText(WPARAM wParam, LPARAM lParam);
  751. afx_msg LRESULT OnGetTextLength(WPARAM wParam, LPARAM lParam);
  752. afx_msg LRESULT OnSetMinHeight(WPARAM wParam, LPARAM lParam);
  753. afx_msg void OnWindowPosChanged(WINDOWPOS* lpwndpos);
  754. afx_msg void OnMouseMove(UINT nFlags, CPoint point);
  755. afx_msg void OnMouseLeave();
  756. afx_msg void OnLButtonDown(UINT nFlags, CPoint pt);
  757. afx_msg void OnLButtonDblClk(UINT nFlags, CPoint point);
  758. afx_msg void OnRButtonUp(UINT nFlags, CPoint point);
  759. afx_msg void OnSysCommand(UINT nID, LPARAM lParam);
  760. //}}AFX_MSG
  761. //}}AFX_CODEJOCK_PRIVATE
  762. private:
  763. BOOL IsWin4();
  764. private:
  765. DISABLE_WNDCREATE()
  766. DISABLE_WNDCREATEEX()
  767. protected:
  768. CArray <CXTPStatusBarPane*, CXTPStatusBarPane*> m_arrPanes;  // Array of panes
  769. int m_nMinHeight;                           // Minimum client height
  770. CFont m_fontStatus;                         // Font of status bar
  771. BOOL m_bDrawDisabledText;                   // TRUE to draw disabled text
  772. CXTPStatusBarPane* m_pHighlightedPane;      // Pane currently highlighted
  773. int m_nRibbonDividerIndex;                  // Position of dark part for Ribbon Theme
  774. BOOL m_bShowSizeGripper;                    // TRUE to show size gripper
  775. CXTPMarkupContext* m_pMarkupContext;
  776. int m_cxPaneSpacing;
  777. int m_bCustomizable;
  778. private:
  779. CXTPCommandBars* m_pCommandBars;
  780. CXTPToolTipContext* m_pToolTipContext;          // Tooltip Context.
  781. friend class CXTPStatusBarPane;
  782. };
  783. //===========================================================================
  784. // Summary:
  785. //     CXTPStatusBarSwitchPane is a CXTPStatusBarPane derived class. CXTPStatusBarSwitchPane works with
  786. //     CXTStatusBar and allows you to create switches in your status
  787. //     bar area.
  788. //===========================================================================
  789. class _XTP_EXT_CLASS CXTPStatusBarSwitchPane : public CXTPStatusBarPane
  790. {
  791. DECLARE_DYNAMIC(CXTPStatusBarSwitchPane)
  792. public:
  793. struct SWITCH
  794. {
  795. CString strToolTip;
  796. UINT nID;
  797. int nWidth;
  798. BOOL bChecked;
  799. BOOL bHighlighted;
  800. BOOL bPressed;
  801. };
  802. public:
  803. CXTPStatusBarSwitchPane();
  804. ~CXTPStatusBarSwitchPane();
  805. public:
  806. BOOL SetSwitches(const UINT* lpIDArray, int nIDCount);
  807. SWITCH* AddSwitch(UINT nID, LPCTSTR lpszToolTip);
  808. SWITCH* AddSwitch(UINT nID);
  809. SWITCH* GetSwitch(int nIndex) const;
  810. int GetSwitchCount() const;
  811. void RemoveAll();
  812. void RemoveSwitch(UINT nID);
  813. void SetChecked(UINT nID);
  814. virtual int GetWidth();
  815. public:
  816. SWITCH* HitTest(CPoint point, CRect& rcItem) const;
  817. protected:
  818. virtual void OnLButtonDown(CPoint point);
  819. virtual void OnDraw(CDC* pDC, CRect rcItem);
  820. virtual void OnMouseMove(CPoint point);
  821. virtual INT_PTR OnToolHitTest(CPoint point, TOOLINFO* pTI) const;
  822. protected:
  823. CArray<SWITCH*, SWITCH*> m_arrSwitches;
  824. SWITCH* m_pHighlighted;
  825. };
  826. //===========================================================================
  827. // Summary:
  828. //     CXTPStatusBarScrollBarPane is a CXTPStatusBarPane derived class. CXTPStatusBarScrollBarPane works with
  829. //     CXTStatusBar and allows you to create themed ScrollBar in your status
  830. //     bar area.
  831. //===========================================================================
  832. class _XTP_EXT_CLASS CXTPStatusBarScrollBarPane : public CXTPStatusBarPane, public CXTPScrollBase
  833. {
  834. DECLARE_DYNAMIC(CXTPStatusBarScrollBarPane)
  835. public:
  836. CXTPStatusBarScrollBarPane();
  837. ~CXTPStatusBarScrollBarPane();
  838. public:
  839. //-----------------------------------------------------------------------
  840. // Summary:
  841. //     Call this method to set position of scrollbar
  842. // Parameters:
  843. //     nValue    - Scrollbar position to be set
  844. //-----------------------------------------------------------------------
  845. void SetPos(int nValue);
  846. void SetRange(int nMin, int nMax);
  847. int GetPos() const;
  848. public:
  849. //-----------------------------------------------------------------------
  850. // Summary:
  851. //     Call this method to set tooltip for scroll part of scrollbar.
  852. // Parameters:
  853. //     nPart    - Part of scrollbar to set tooltip. Can be XTP_HTSCROLLUP, XTP_HTSCROLLDOWN, XTP_HTSCROLLUPPAGE, XTP_HTSCROLLDOWNPAGE, XTP_HTSCROLLTHUMB
  854. //     lpszTooltip - Text of tooltip to set
  855. //-----------------------------------------------------------------------
  856. void SetTooltipPart(int nPart, LPCTSTR lpszTooltip);
  857. protected:
  858. //{{AFX_CODEJOCK_PRIVATE
  859. virtual CRect GetScrollBarRect();
  860. virtual void GetScrollInfo(SCROLLINFO* psi);
  861. virtual void DoScroll(int cmd, int pos);
  862. virtual void RedrawScrollBar();
  863. virtual CXTPScrollBarPaintManager* GetScrollBarPaintManager() const;
  864. virtual BOOL IsScrollBarEnabled() const;
  865. virtual CWnd* GetParentWindow() const;
  866. virtual INT_PTR CXTPStatusBarScrollBarPane::OnToolHitTest(CPoint point, TOOLINFO* pTI) const;
  867. virtual void OnDraw(CDC* pDC, CRect rcItem);
  868. virtual void OnMouseMove(CPoint point);
  869. virtual void OnLButtonDown(CPoint point);
  870. //}}AFX_CODEJOCK_PRIVATE
  871. protected:
  872. int m_nMin;
  873. int m_nMax;
  874. int m_nValue;
  875. int m_nPage;
  876. CString m_strToolTipPart[5];
  877. };
  878. //===========================================================================
  879. // Summary:
  880. //     CXTPStatusBarSliderPane is a CXTPStatusBarPane derived class. CXTPStatusBarSliderPane works with
  881. //     CXTStatusBar and allows you to create themed Slider in your status
  882. //     bar area.
  883. //===========================================================================
  884. class _XTP_EXT_CLASS CXTPStatusBarSliderPane : public CXTPStatusBarScrollBarPane
  885. {
  886. DECLARE_DYNAMIC(CXTPStatusBarSliderPane)
  887. public:
  888. CXTPStatusBarSliderPane();
  889. ~CXTPStatusBarSliderPane();
  890. protected:
  891. virtual CXTPScrollBarPaintManager* GetScrollBarPaintManager() const;
  892. public:
  893. void SetTicks(double* pTicks, int nCount);
  894. };
  895. //===========================================================================
  896. // Summary:
  897. //     CXTPStatusBarProgressPane is a CXTPStatusBarPane derived class. CXTPStatusBarProgressPane works with
  898. //     CXTStatusBar and allows you to create progress bar in your status bar area.
  899. //===========================================================================
  900. class _XTP_EXT_CLASS CXTPStatusBarProgressPane : public CXTPStatusBarPane, public CXTPProgressBase
  901. {
  902. DECLARE_DYNAMIC(CXTPStatusBarProgressPane)
  903. public:
  904. //-----------------------------------------------------------------------
  905. // Summary:
  906. //     Constructs a CXTPStatusBarProgressPane object
  907. //-----------------------------------------------------------------------
  908. CXTPStatusBarProgressPane();
  909. //-----------------------------------------------------------------------
  910. // Summary:
  911. //     Destroys a CXTPStatusBarProgressPane object, handles cleanup and deallocation
  912. //-----------------------------------------------------------------------
  913. ~CXTPStatusBarProgressPane();
  914. protected:
  915. //----------------------------------------------------------------------
  916. // Summary:
  917. //     This method is called to redraw progress bar
  918. //----------------------------------------------------------------------
  919. virtual void RedrawProgress();
  920. //----------------------------------------------------------------------
  921. // Summary:
  922. //     This method is called to retrieve pointer to CXTPProgressPaintManager
  923. //----------------------------------------------------------------------
  924. virtual CXTPProgressPaintManager* GetProgressPaintManager() const;
  925. //----------------------------------------------------------------------
  926. // Summary:
  927. //     This method is called to get bounding rectangle of progressbar
  928. //----------------------------------------------------------------------
  929. virtual CRect GetProgressRect();
  930. // Summary:
  931. //     This method is called to draw pane item. Override it to draw custom pane.
  932. // Parameters:
  933. //     pDC    - Pointer to a valid device context
  934. //     rcItem - Item rectangle
  935. //-----------------------------------------------------------------------
  936. virtual void OnDraw(CDC* pDC, CRect rcItem);
  937. public:
  938. };
  939. //////////////////////////////////////////////////////////////////////
  940. AFX_INLINE void CXTPStatusBarPane::SetCaption(LPCTSTR lpszCaption){
  941. m_strCaption = lpszCaption;
  942. }
  943. AFX_INLINE CString CXTPStatusBarPane::GetCaption() const{
  944. return m_strCaption;
  945. }
  946. AFX_INLINE void CXTPStatusBarPane::SetValue(LPCTSTR lpszValue){
  947. m_strValue = lpszValue;
  948. }
  949. AFX_INLINE CString CXTPStatusBarPane::GetValue() const{
  950. return m_strValue;
  951. }
  952. AFX_INLINE BOOL CXTPStatusBarPane::IsHighlighted() const {
  953. return m_pStatusBar->m_pHighlightedPane == this;
  954. }
  955. AFX_INLINE BOOL CXTPStatusBarPane::IsPressed() const {
  956. return m_bPressed;
  957. }
  958. AFX_INLINE void CXTPStatusBarPane::SetBeginGroup(BOOL bBeginGroup) {
  959. m_bBeginGroup = bBeginGroup;
  960. }
  961. AFX_INLINE BOOL CXTPStatusBarPane::GetBeginGroup() const {
  962. return m_bBeginGroup;
  963. }
  964. AFX_INLINE BOOL CXTPStatusBarPane::HasBorders() const {
  965. return ((m_nStyle & SBPS_NOBORDERS) == 0);
  966. }
  967. AFX_INLINE void CXTPStatusBarPane::ShowBorders(BOOL bShowBorders) {
  968. SetStyle(bShowBorders ? m_nStyle & ~SBPS_NOBORDERS : m_nStyle | SBPS_NOBORDERS);
  969. }
  970. AFX_INLINE void CXTPStatusBar::SetRibbonDividerIndex(int nIndex) {
  971. m_nRibbonDividerIndex = nIndex;
  972. }
  973. AFX_INLINE int CXTPStatusBar::GetRibbonDividerIndex() const {
  974. return m_nRibbonDividerIndex;
  975. }
  976. AFX_INLINE void CXTPStatusBar::SetCommandBars(CXTPCommandBars* pCommandBars) {
  977. m_pCommandBars = pCommandBars;
  978. }
  979. AFX_INLINE int CXTPStatusBar::GetPaneCount() const {
  980. return (int)m_arrPanes.GetSize();
  981. }
  982. AFX_INLINE CStatusBarCtrl& CXTPStatusBar::GetStatusBarCtrl() const{
  983. return *(CStatusBarCtrl*)this;
  984. }
  985. #if _MSC_VER > 1100
  986. AFX_INLINE void CXTPStatusBar::SetBorders(int cxLeft, int cyTop, int cxRight, int cyBottom){
  987. ASSERT(cyTop >= 2); CControlBar::SetBorders(cxLeft, cyTop, cxRight, cyBottom);
  988. }AFX_INLINE void CXTPStatusBar::SetBorders(LPCRECT lpRect) {
  989. SetBorders(lpRect->left, lpRect->top, lpRect->right, lpRect->bottom);
  990. }
  991. #endif
  992. #ifdef _DEBUG
  993. // status bars do not support docking
  994. AFX_INLINE void CXTPStatusBar::EnableDocking(DWORD) {
  995. ASSERT(FALSE);
  996. }
  997. #endif
  998. AFX_INLINE void CXTPStatusBar::SetDrawDisabledText(BOOL bDraw) {
  999. m_bDrawDisabledText = bDraw;
  1000. }
  1001. AFX_INLINE BOOL CXTPStatusBar::GetDrawDisabledText() const {
  1002. return m_bDrawDisabledText;
  1003. }
  1004. AFX_INLINE CXTPToolTipContext* CXTPStatusBar::GetToolTipContext() const {
  1005. return m_pToolTipContext;
  1006. }
  1007. AFX_INLINE CXTPMarkupContext* CXTPStatusBar::GetMarkupContext() const {
  1008. return m_pMarkupContext;
  1009. }
  1010. AFX_INLINE CXTPMarkupUIElement* CXTPStatusBarPane::GetMarkupUIElement() const {
  1011. return m_pMarkupUIElement;
  1012. }
  1013. #endif //#if !defined(__XTPSTATUSBAR_H__)