NGenericToolBar.h
上传用户:whjcdz88
上传日期:2007-01-02
资源大小:350k
文件大小:5k
源码类别:

工具条

开发平台:

Visual C++

  1. // NGenericToolBar.h: interface for the CNGenericToolBar class.
  2. //
  3. /*
  4. Copyright (C) 1998 Tony Hoyle (tmh@netfusion.co.uk)
  5. This program is free software; you can redistribute it and/or modify it under the terms
  6. of the GNU General Public License as published by the Free Software Foundation; either
  7. version 2 of the License, or (at your option) any later version.
  8. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
  9. without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  10. See the GNU General Public License for more details.
  11. You should have received a copy of the GNU General Public License along with this program;
  12. if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  13. */
  14. //////////////////////////////////////////////////////////////////////
  15. #if !defined(AFX_NGENERICTOOLBAR_H__DE1A2044_A20C_11D1_87DF_00A0C94457BF__INCLUDED_)
  16. #define AFX_NGENERICTOOLBAR_H__DE1A2044_A20C_11D1_87DF_00A0C94457BF__INCLUDED_
  17. #if _MSC_VER >= 1000
  18. #pragma once
  19. #endif // _MSC_VER >= 1000
  20. #ifndef NGTB_PROJECT
  21. #define NGTB_EXPORT __declspec(dllimport)
  22. #else
  23. #define NGTB_EXPORT __declspec(dllexport)
  24. #endif
  25. #undef AFX_DATA
  26. #define AFX_DATA NGTB_EXPORT
  27. // Command IDs.  These should really be in resource.h
  28. #define IDM_BUTTONSONLY                 52700
  29. #define IDM_BUTTONSANDTEXT              52701
  30. #define IDM_TEXTONLY                    52702
  31. #define IDM_RECALCSIZE                  52703
  32. #define NGTB_NO_SYSMENU 0x0002L
  33. class CNGenericToolBar : public CToolBar  
  34. {
  35. friend class CNMDIMenuFrameWnd;
  36. friend class CNSDIMenuFrameWnd;
  37. friend class CNGenericPopup;
  38. DECLARE_DYNAMIC(CNGenericToolBar)
  39. public:
  40. NGTB_EXPORT CNGenericToolBar();
  41. NGTB_EXPORT virtual ~CNGenericToolBar();
  42. // Compatibility with CToolBar
  43. NGTB_EXPORT BOOL Create( CWnd* pParentWnd, DWORD dwStyle = WS_CHILD | WS_VISIBLE | CBRS_TOP,
  44. UINT nID = AFX_IDW_TOOLBAR ) { return CreateEx(pParentWnd,TBSTYLE_FLAT|TBSTYLE_TRANSPARENT,dwStyle|CBRS_SIZE_DYNAMIC,nID); }
  45. // Our stuff
  46. NGTB_EXPORT BOOL CreateEx(CWnd* pParentWnd, DWORD dwExStyle = TBSTYLE_FLAT | TBSTYLE_TRANSPARENT,
  47. DWORD dwStyle = WS_CHILD | WS_VISIBLE | CBRS_TOP | CBRS_SIZE_DYNAMIC,
  48. UINT nID = AFX_IDW_TOOLBAR, LPCTSTR szTitle = NULL);
  49. NGTB_EXPORT static void SetVisualState(BOOL bButtons, BOOL bText);
  50. NGTB_EXPORT BOOL GetVisualState(BOOL bText);
  51. // CToolBar implementation changes
  52. NGTB_EXPORT BOOL LoadToolBar(LPCTSTR lpszResourceName);
  53. NGTB_EXPORT BOOL LoadToolBar(UINT nIDResource) { return LoadToolBar(MAKEINTRESOURCE(nIDResource)); }
  54. NGTB_EXPORT BOOL SetButtonText(int nIndex, LPCTSTR lpszText);
  55. NGTB_EXPORT BOOL GenericToolBarModifyStyle(DWORD dwRemove, DWORD dwAdd);
  56. NGTB_EXPORT DWORD GetGenericToolBarStyle(){return m_dwGenericToolBarStyle;}
  57. protected:
  58. // Styles
  59. DWORD m_dwGenericToolBarStyle;
  60. struct Accel { UINT nKey; UINT nId; };
  61. CMenu m_pop;
  62. BOOL m_bHasText,m_bHasBitmaps,m_bForceText;
  63. CArray<int,int> m_TextIds;
  64. CArray<Accel,Accel&> m_accelList;
  65. CWnd* m_pParent;
  66. static BOOL m_bButtons;
  67. static BOOL m_bText;
  68. BOOL m_bSysMenuIcon; // Used by menu to draw icon
  69. HICON m_hSysMenuIcon; // Icon to draw for above
  70. CRect m_rectSysMenu; // Where we drew it
  71. static CArray<CNGenericToolBar*,CNGenericToolBar*> m_ToolbarList;
  72. virtual void SettingChange();
  73. BOOL RecalcSize();
  74. static void SendToAllToolbars(UINT uMsg, WPARAM wParam = NULL, LPARAM lParam = NULL);
  75. void _SetButton(int nIndex, TBBUTTON* pButton);
  76. void DrawGripper(CWindowDC *pDC, CRect& rectWindow);
  77. void DrawSysMenuIcon(CWindowDC* pDC, CRect& rectWindow);
  78. void EraseNonClient(BOOL bRaised);
  79. void DrawBorders(CDC* pDC, CRect& rect);
  80. void RepaintBackground();
  81. void DrawSeparators();
  82. void DrawSeparators(CClientDC* pDC);
  83. virtual BOOL TranslateMenuChar(UINT nChar);
  84. virtual BOOL KeyboardFilter(UINT nChar, UINT nRepCnt, UINT nFlags);
  85. virtual void OnUpdateCmdUI(CFrameWnd* pTarget, BOOL bDisableIfNoHndler);
  86. virtual void OnOverSysMenu() { };
  87. virtual CSize CalcFixedLayout(BOOL bStretch, BOOL bHorz);
  88. void _GetButton(int nIndex, TBBUTTON* pButton) const;
  89. int WrapToolBar(TBBUTTON* pData, int nCount, int nWidth);
  90. void SizeToolBar(TBBUTTON* pData, int nCount, int nLength, BOOL bVert = FALSE);
  91. CSize CalcLayout(DWORD nMode, int nLength = -1);
  92. CSize CalcSize(TBBUTTON* pData, int nCount);
  93. virtual CSize CalcDynamicLayout(int nLength, DWORD dwMode);
  94. protected:
  95. //{{AFX_MSG(CNGenericToolBar)
  96. afx_msg void OnContextMenu(CWnd* pWnd, CPoint point);
  97. afx_msg void OnDestroy();
  98. afx_msg UINT OnNcHitTest(CPoint point);
  99. //}}AFX_MSG
  100. DECLARE_MESSAGE_MAP()
  101. afx_msg void OnNcCalcSize(BOOL bCalcValidRects, NCCALCSIZE_PARAMS* lpncsp);
  102. afx_msg void OnButtonsOnly();
  103. afx_msg void OnTextOnly();
  104. afx_msg void OnTextAndButtons();
  105. afx_msg void OnRecalcSize();
  106. afx_msg void OnNcPaint();
  107. afx_msg void OnWindowPosChanging(LPWINDOWPOS lpWndPos);
  108. afx_msg void OnPaint();
  109. };
  110. #undef AFX_DATA
  111. #define AFX_DATA
  112. #endif // !defined(AFX_NGENERICTOOLBAR_H__DE1A2044_A20C_11D1_87DF_00A0C94457BF__INCLUDED_)