UIFixTB.h
上传用户:yatsl7111
上传日期:2007-01-08
资源大小:1433k
文件大小:2k
源码类别:

图形图象

开发平台:

Visual C++

  1. ////////////////////////////////////////////////////////////////
  2. // Copyright 1998 Paul DiLascia
  3. // If this code works, it was written by Paul DiLascia.
  4. // If not, I don't know who wrote it.
  5. //
  6. #ifndef __FIXTB_H
  7. #define __FIXTB_H
  8. //////////////////
  9. // This class fixes the sizing bugs in MFC that calculates the
  10. // size of toolbars incorrectly for modern toobars (comctl32 version >= 4.71)
  11. // It also contains a number of wrappers for function that CToolBar doesn't
  12. // have (so you don't have to use GetToolBarCtrl).
  13. //
  14. // Generally, you should use CFlatToolBar instead of CFixMFCToolBar (even
  15. // if you're not using the flat style), but you can use CFixMFCToolBar if
  16. // all you want is the sizing fix for MFC tooblars.
  17. //
  18. class CTRL_EXT_CLASS CFixMFCToolBar : public CToolBar {
  19. public:
  20. CFixMFCToolBar();
  21. virtual ~CFixMFCToolBar();
  22. static int iVerComCtl32; // version of commctl32.dll (eg 471)
  23. // There is a bug in comctl32.dll, version 4.71+ that causes it to
  24. // draw vertical separators in addition to horizontal ones, when the
  25. // toolbar is vertically docked. If the toolbar has no dropdown buttons,
  26. // this is not a problem because the separators are ignored when calculating
  27. // the width of the toolbar. If, however, you have dropdown buttons, then the
  28. // width of a vertically docked toolbar will be too narrow to show the
  29. // dropdown arrow. This is in fact what happens in Visual Studio. If you
  30. // want to show the dropdown arrow when vertical, set this to TRUE
  31. // (default = FALSE)
  32. //
  33. BOOL m_bShowDropdownArrowWhenVertical;
  34. virtual CSize CalcFixedLayout(BOOL bStretch, BOOL bHorz);
  35. virtual CSize CalcDynamicLayout(int nLength, DWORD nMode);
  36. CSize CalcLayout(DWORD nMode, int nLength = -1);
  37. CSize CalcSize(TBBUTTON* pData, int nCount);
  38. int WrapToolBar(TBBUTTON* pData, int nCount, int nWidth);
  39. void SizeToolBar(TBBUTTON* pData, int nCount, int nLength,
  40. BOOL bVert = FALSE);
  41. virtual void OnBarStyleChange(DWORD dwOldStyle, DWORD dwNewStyle);
  42. virtual CSize GetButtonSize(TBBUTTON* pData, int iButton);
  43. // MFC has versions of these that are protected--but why?
  44. //
  45. void GetButton(int nIndex, TBBUTTON* pButton) const;
  46. void SetButton(int nIndex, TBBUTTON* pButton);
  47. protected:
  48. LRESULT OnSizeHelper(CSize& sz, LPARAM lp);
  49. afx_msg LRESULT OnSetBitmapSize(WPARAM, LPARAM);
  50. afx_msg LRESULT OnSetButtonSize(WPARAM, LPARAM);
  51. afx_msg LRESULT OnSettingChange(WPARAM, LPARAM);
  52. DECLARE_MESSAGE_MAP()
  53. DECLARE_DYNAMIC(CFixMFCToolBar)
  54. };
  55. #endif