Extstatuscontrolbar.h
上传用户:dengkfang
上传日期:2008-12-30
资源大小:5233k
文件大小:4k
源码类别:

CA认证

开发平台:

Visual C++

  1. // This is part of the Professional User Interface Suite library.
  2. // Copyright (C) 2001-2004 FOSS Software, Inc.
  3. // All rights reserved.
  4. //
  5. // http://www.prof-uis.com
  6. // http://www.fossware.com
  7. // mailto:foss@fossware.com
  8. // Warranties and Disclaimers:
  9. // THIS SOFTWARE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND
  10. // INCLUDING, BUT NOT LIMITED TO, WARRANTIES OF MERCHANTABILITY,
  11. // FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
  12. // IN NO EVENT WILL FOSS SOFTWARE INC. BE LIABLE FOR ANY DIRECT,
  13. // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY OR CONSEQUENTIAL DAMAGES,
  14. // INCLUDING DAMAGES FOR LOSS OF PROFITS, LOSS OR INACCURACY OF DATA,
  15. // INCURRED BY ANY PERSON FROM SUCH PERSON'S USAGE OF THIS SOFTWARE
  16. // EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
  17. #if (!defined __EXT_STATUSCONTROLBAR_H)
  18. #define __EXT_STATUSCONTROLBAR_H
  19. #if _MSC_VER > 1000
  20. #pragma once
  21. #endif // _MSC_VER > 1000
  22. // ExtStatusControlBar.h : header file
  23. //
  24. /////////////////////////////////////////////////////////////////////////////
  25. // CExtStatusControlBar window
  26. class CExtStatusControlBar : public CStatusBar
  27. {
  28. // Construction
  29. public:
  30. CExtStatusControlBar();
  31. // Attributes
  32. public:
  33. // Operations
  34. public:
  35. int GetPanesCount() const{
  36. return m_nCount;
  37. }
  38. void SetPaneWidth(int nIndex, int nWidth)
  39. {
  40. _STATUSBAR_PANE_ pane;
  41. PaneInfoGet(nIndex, &pane);
  42. pane.cxText = nWidth;
  43. PaneInfoSet(nIndex, &pane);
  44. }
  45. BOOL AddPane(
  46. UINT nID, // ID of the  pane
  47. int nIndex // index of the pane
  48. );
  49. BOOL RemovePane(
  50. UINT nID // ID of the pane
  51. );
  52. BOOL AddPaneControl(CWnd* pWnd, UINT nID, BOOL bAutoDestroy)
  53. {
  54. return AddPaneControl( pWnd->GetSafeHwnd(), nID, bAutoDestroy);
  55. }
  56. BOOL AddPaneControl(HWND hWnd, UINT nID, BOOL bAutoDestroy);
  57. void DisableControl( int nIndex, BOOL bDisable=TRUE)
  58. {
  59. UINT uItemID = GetItemID(nIndex);
  60. for ( int i = 0; i < m_arrPaneControls.GetSize(); i++ ){
  61. if( uItemID == m_arrPaneControls[i]->nID ){
  62. if( m_arrPaneControls[i]->hWnd && ::IsWindow(m_arrPaneControls[i]->hWnd) ) {
  63. ::EnableWindow(m_arrPaneControls[i]->hWnd, bDisable); 
  64. }
  65. }
  66. }
  67. }
  68. void SetPaneInfo(int nIndex, UINT nID, UINT nStyle, int cxWidth)
  69. {
  70. CStatusBar::SetPaneInfo(nIndex, nID, nStyle, cxWidth);
  71. BOOL bDisabled = ((nStyle&SBPS_DISABLED) == 0);
  72. DisableControl(nIndex, bDisabled);
  73. }
  74. void SetPaneStyle(int nIndex, UINT nStyle)
  75. {
  76. CStatusBar::SetPaneStyle(nIndex, nStyle);
  77. BOOL bDisabled = ((nStyle&SBPS_DISABLED) == 0);
  78. DisableControl(nIndex, bDisabled);
  79. }
  80. // Overrides
  81. // ClassWizard generated virtual function overrides
  82. //{{AFX_VIRTUAL(CExtStatusControlBar)
  83. //}}AFX_VIRTUAL
  84. // Implementation
  85. public:
  86. virtual ~CExtStatusControlBar();
  87. protected:
  88. struct _STATUSBAR_PANE_
  89. {
  90. _STATUSBAR_PANE_(){
  91. nID = cxText = nStyle = nFlags = 0;
  92. }
  93. UINT    nID;        // IDC of indicator: 0 => normal text area
  94. int     cxText;     // width of string area in pixels
  95. //   on both sides there is a 3 pixel gap and
  96. //   a one pixel border, making a pane 6 pixels wider
  97. UINT    nStyle;     // style flags (SBPS_*)
  98. UINT    nFlags;     // state flags (SBPF_*)
  99. CString strText;    // text in the pane
  100. };
  101. struct _STATUSBAR_PANE_CTRL_
  102. {
  103. HWND hWnd;
  104. UINT nID;
  105. BOOL bAutoDestroy;
  106. };
  107. CArray < _STATUSBAR_PANE_CTRL_*, _STATUSBAR_PANE_CTRL_* > m_arrPaneControls; 
  108. _STATUSBAR_PANE_* GetPanePtr(int nIndex) const
  109. {
  110. ASSERT((nIndex >= 0 && nIndex < m_nCount) || m_nCount == 0);
  111. return ((_STATUSBAR_PANE_*)m_pData) + nIndex;
  112. }
  113. BOOL PaneInfoGet(int nIndex, _STATUSBAR_PANE_* pPane);
  114. BOOL PaneInfoSet(int nIndex, _STATUSBAR_PANE_* pPane);
  115. void RepositionControls();
  116. // Generated message map functions
  117. protected:
  118. //{{AFX_MSG(CExtStatusControlBar)
  119. afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
  120. //}}AFX_MSG
  121. DECLARE_MESSAGE_MAP()
  122. virtual LRESULT WindowProc(UINT message, WPARAM wParam, LPARAM lParam);
  123. };
  124. /////////////////////////////////////////////////////////////////////////////
  125. //{{AFX_INSERT_LOCATION}}
  126. // Microsoft Visual C++ will insert additional declarations immediately before the previous line.
  127. #endif // __EXT_STATUSCONTROLBAR_H