FLATBAR.H
上传用户:gzfeiyu199
上传日期:2021-09-15
资源大小:68k
文件大小:3k
源码类别:

编辑框

开发平台:

Visual C++

  1. ////////////////////////////////////////////////////////////////
  2. // CFlatToolBar 1997 Microsoft Systems Journal. 
  3. // If this code works, it was written by Paul DiLascia.
  4. // If not, I don't know who wrote it.
  5. // This code compiles with Visual C++ 5.0 on Windows 95
  6. //
  7. #if !defined(FLATBAR_H_INCLUDED)
  8. #define FLATBAR_H_INCLUDED
  9. #if _MSC_VER >= 1000
  10. #pragma once
  11. #endif // _MSC_VER >= 1000
  12. #if _MSC_VER < 1200 // VC5 support
  13. #include <comm_control.h>
  14. #endif
  15. //////////////////
  16. // "Flat" style tool bar. Use instead of CToolBar in your CMainFrame
  17. // or other window to create a tool bar with the flat look.
  18. //
  19. // CFlatToolBar fixes the display bug described in the article. It also has
  20. // overridden load functions that modify the style to TBSTYLE_FLAT. If you
  21. // don't create your toolbar by loading it from a resource, you should call
  22. // ModifyStyle(0, TBSTYLE_FLAT) yourself.
  23. //
  24. class CLASS_EXPORT CFlatToolBar : public CToolBar {
  25. DECLARE_DYNAMIC(CFlatToolBar)
  26. ////////////////////////////////////////////////////////////////
  27. // FixTB code from August 98 article:
  28. ////////////////////////////////////////////////////////////////
  29. public:
  30. CFlatToolBar();
  31. virtual ~CFlatToolBar();
  32. static int iVerComCtl32; // version of commctl32.dll (eg 471)
  33. // There is a bug in comctl32.dll, version 4.71+ that causes it to
  34. // draw vertical separators in addition to horizontal ones, when the
  35. // toolbar is vertical. Set this to FALSE to eliminate them--but then
  36. // you lose your dropdown arrows.
  37. //
  38. BOOL m_bShowDropdownArrowWhenVertical;
  39. CSize CalcLayout(DWORD nMode, int nLength = -1);
  40. CSize CalcSize(TBBUTTON* pData, int nCount);
  41. int WrapToolBar(TBBUTTON* pData, int nCount, int nWidth);
  42. void SizeToolBar(TBBUTTON* pData, int nCount, int nLength,
  43. BOOL bVert = FALSE);
  44. // MFC has versions of these are hidden--why?
  45. //
  46. void GetButton(int nIndex, TBBUTTON* pButton) const;
  47. void SetButton(int nIndex, TBBUTTON* pButton);
  48. ////////////////////////////////////////////////////////////////
  49. // End FixTb code.
  50. ////////////////////////////////////////////////////////////////
  51. public:
  52. BOOL LoadToolBar(LPCTSTR lpszResourceName);
  53. BOOL LoadToolBar(UINT nIDResource)
  54. { return LoadToolBar(MAKEINTRESOURCE(nIDResource)); }
  55. // Operations
  56. public:
  57. // Overrides
  58. // ClassWizard generated virtual function overrides
  59. //{{AFX_VIRTUAL(CFlatToolBar)
  60. public:
  61. virtual void OnUpdateCmdUI(CFrameWnd* pTarget, BOOL bDisableIfNoHndler);
  62. virtual CSize CalcFixedLayout(BOOL bStretch, BOOL bHorz);
  63. virtual CSize CalcDynamicLayout(int nLength, DWORD nMode);
  64. virtual CSize GetButtonSize(TBBUTTON* pData, int iButton);
  65. //}}AFX_VIRTUAL
  66. // Generated message map functions
  67. protected:
  68. //{{AFX_MSG(CFlatToolBar)
  69. afx_msg void OnWindowPosChanging(LPWINDOWPOS lpWndPos);
  70. afx_msg void OnWindowPosChanged(LPWINDOWPOS lpWndPos);
  71. afx_msg BOOL OnNcCreate(LPCREATESTRUCT lpCreateStruct);
  72. //}}AFX_MSG
  73. DECLARE_MESSAGE_MAP()
  74. };
  75. ////////////////
  76. // The following class was copied from BARTOOL.CPP in the MFC source.
  77. // All I changed was SetCheck--PD.
  78. //
  79. class CFlatOrCoolBarCmdUI : public CCmdUI // class private to this file !
  80. {
  81. public: // re-implementations only
  82. virtual void Enable(BOOL bOn);
  83. virtual void SetCheck(int nCheck);
  84. virtual void SetText(LPCTSTR lpszText);
  85. };
  86. #endif