ToolbarEx.h
上传用户:lczygg
上传日期:2007-07-03
资源大小:2947k
文件大小:8k
源码类别:

语音合成与识别

开发平台:

Visual C++

  1. #if !defined(_TOOLBAREX_H_)
  2. #define _TOOLBAREX_H_
  3. #if _MSC_VER > 1000
  4. #pragma once
  5. #endif // _MSC_VER > 1000
  6. // ToolBarEx.h : header file
  7. //
  8. #include <afxtempl.h>
  9. #ifndef __AFXPRIV_H__
  10. #include <afxpriv.h>
  11. #endif
  12. #include "CustomizeDialog.h"
  13. ////////////////////////////////////////////////////////////////////////////
  14. // I got some pieces of this code from  MSJ Articles of Paul Dilascia
  15. //
  16. /////////////////////////////////////////////////////////////////////////////
  17. // CToolBarEx window
  18. #define ID_CUSTOMIZE_BAR 0xFF
  19. /////////////////////////////////////////////////////////////////////////////
  20. // COMCTL32 v5.81 specific stuff:
  21. #ifndef TBSTYLE_EX_MIXEDBUTTONS
  22. #define TBSTYLE_EX_MIXEDBUTTONS         0x00000008
  23. #define TBSTYLE_EX_HIDECLIPPEDBUTTONS   0x00000010
  24. #define CCM_SETVERSION       (CCM_FIRST+7)
  25. #define CCM_GETVERSION       (CCM_FIRST+8)
  26. #endif  // !TBSTYLE_EX_MIXEDBUTTONS
  27. #ifndef BTNS_SHOWTEXT
  28. #define BTNS_SHOWTEXT           0x0040
  29. #endif  // !BTNS_SHOWTEXT
  30. #ifndef BTNS_WHOLEDROPDOWN
  31. #define BTNS_WHOLEDROPDOWN      0x0080
  32. #endif  // !BTNS_WHOLEDROPDOWN
  33. #ifndef TBN_SAVE
  34. #define TBN_SAVE                (TBN_FIRST - 22)
  35. #define TBN_RESTORE             (TBN_FIRST - 21)
  36. #ifndef TBN_INITCUSTOMIZE
  37. #define TBN_INITCUSTOMIZE       (TBN_FIRST - 23)
  38. #define TBNRF_HIDEHELP          0x00000001
  39. #endif  // !TBN_INITCUSTOMIZE
  40. typedef struct tagNMTBSAVE
  41. {
  42.     NMHDR hdr;
  43.     DWORD* pData;
  44.     DWORD* pCurrent;
  45.     UINT cbData;
  46.     int iItem;
  47.     int cButtons;
  48.     TBBUTTON tbButton;
  49. } NMTBSAVE, *LPNMTBSAVE;
  50. typedef struct tagNMTBRESTORE
  51. {
  52.     NMHDR hdr;
  53.     DWORD* pData;
  54.     DWORD* pCurrent;
  55.     UINT cbData;
  56.     int iItem;
  57.     int cButtons;
  58.     int cbBytesPerRecord;
  59.     TBBUTTON tbButton;
  60. } NMTBRESTORE, *LPNMTBRESTORE;
  61. #endif  // !TBN_SAVE
  62. class CToolBarEx : public CToolBar
  63. {
  64. protected:
  65. friend class CCustomizeDialog;
  66. // Inner structs
  67. struct CToolBarButtonInfo
  68. {
  69. TBBUTTON  tbButton; // information regarding the button
  70. CString  btnText; // text for the button
  71. BOOL  bInitiallyVisible ; //  Button intially vible
  72. // BOOL  bShowOnRight;  // Visible on Selective  Right
  73. };
  74. // One of these for each drop-down button
  75. struct CDropDownButtonInfo
  76. {
  77. CDropDownButtonInfo * pNext;
  78. UINT idButton; // command ID of button
  79. UINT idMenu; // popup menu to display
  80. } ;
  81. // Construction
  82. public:
  83. CToolBarEx();
  84. typedef CArray<CToolBarButtonInfo,CToolBarButtonInfo &> ToolBarInfoArray;
  85. // Attributes
  86. public:
  87. const static CSize m_szImageSmall;
  88. const static CSize m_szImageLarge;
  89. const static TextOptions  m_eInitialTextOptions;
  90. const static IconOptions  m_eInitialIconOptions;
  91. // Operations
  92. public:
  93. // this member function is called to insert a control into the toolbar
  94. // and returns a pointer to the newly inserted control
  95. //
  96. CWnd* InsertControl(CRuntimeClass* pClass,LPCTSTR lpszWindowName,CRect& rect,UINT nID,DWORD dwStyle );
  97. CWnd* InsertControl(CWnd* pCtrl,CRect& rect,UINT nID);
  98. // call to add drop-down buttons
  99. BOOL AddDropDownButton(UINT nIDButton,UINT nIDMenu,BOOL bArrow=TRUE);
  100. // state functions
  101. void SaveState();
  102. void RestoreState();
  103. //Call this function to set the customization, after you have done the changes to the toolbar.
  104. void SetToolBarInfoForCustomization(const ToolBarInfoArray * pAdditional=NULL);
  105. // Overrides
  106. // ClassWizard generated virtual function overrides
  107. //{{AFX_VIRTUAL(CToolBarEx)
  108. //}}AFX_VIRTUAL
  109. // Implementation
  110. public:
  111. BOOL MarkDefaultState();
  112. void Customize();
  113. TextOptions GetTextOptions() { return m_eTextOptions;  }
  114. void SetTextOptions(TextOptions txOptions,BOOL bUpdate=TRUE);
  115. IconOptions GetIconOptions() { return m_eIconOptions;  }
  116. void SetIconOptions(IconOptions txOptions,BOOL bUpdate=TRUE);
  117. BOOL SetDropDownButton(UINT nID,BOOL bArrow);
  118. virtual ~CToolBarEx();
  119. // BOOL m_bShowDropdownArrowWhenVertical; // true to display a drop arrow when docked vertical
  120. BOOL m_bHideChildWndOnVertical; // Hide the windows when docked vertical
  121. // Generated message map functions
  122. protected:
  123. BOOL ShowContextMenu(CPoint pt);
  124. UINT m_nResButtons;
  125. BOOL  SetIconOptionBitmap(IconOptions eIconOptions);
  126. virtual BOOL HasButtonText(int nID);
  127.     static CCustomizeDialog*    m_pCustomizeDlg;
  128.     static HHOOK                m_hCBTHook;
  129. TextOptions  m_eTextOptions;
  130. IconOptions  m_eIconOptions;
  131. BOOL IsVertDocked();
  132. void PositionControls();
  133. CObList* m_pControls; // CObject pointer list which contains controls added to the toolbar
  134. CDropDownButtonInfo* m_pDropButtons; // list of dropdown button/menu pairs
  135. static int m_nBarNumber; // used for customization, holds bar number for restoration.
  136. CString m_strSubKey; // used for customization, holds registry subkey name.
  137. CString m_strValueName; // used for customization, holds registry value.
  138. ToolBarInfoArray   m_ToolBarInfo;
  139. COLORREF m_clrBtnHilight;
  140. COLORREF m_clrBtnShadow;
  141. COLORREF m_clrBtnFace;
  142.     static LRESULT CALLBACK CBTProc( int nCode, WPARAM wParam, LPARAM lParam );
  143. // Find buttons structure for given ID
  144. CDropDownButtonInfo * FindDropDownButtonInfo(UINT nID);
  145. BOOL OnToolBarBtnDropDown(NMHDR* pNMHDR, LRESULT* pRes);
  146. BOOL OnDropDownButtonInfo(const NMTOOLBAR& nmtb, UINT nID, CRect rc);
  147. //Chenged Functions
  148. CSize GetButtonSize(TBBUTTON* pData, int iButton,DWORD dwMode);
  149. CSize CalcSize(TBBUTTON* pData, int nCount,DWORD dwMode);
  150. int WrapToolBar(TBBUTTON* pData, int nCount, int nWidth,DWORD dwMode);
  151. //Copied Functions
  152. void SizeToolBar(TBBUTTON* pData, int nCount, int nLength, BOOL bVert, DWORD dwMode);
  153. CSize CalcLayout(DWORD dwMode, int nLength=-1);
  154. virtual CSize CalcFixedLayout(BOOL bStretch, BOOL bHorz);
  155. virtual CSize CalcDynamicLayout(int nLength, DWORD dwMode);
  156. void _GetButton(int nIndex, TBBUTTON* pButton) const;
  157. void _SetButton(int nIndex, TBBUTTON* pButton);
  158. void Draw3DBorders(CDC * pDC, CRect & rect) ;
  159. //{{AFX_MSG(CToolBarEx)
  160. afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
  161. afx_msg void OnPaint();
  162. afx_msg void OnSysColorChange();
  163. afx_msg void OnContextMenu(CWnd* pWnd, CPoint point);
  164. afx_msg void OnNcPaint();
  165. //}}AFX_MSG
  166. afx_msg void OnToolBarQueryDelete(NMHDR *pNMHDR, LRESULT *pResult);
  167. afx_msg void OnToolBarQueryInsert(NMHDR *pNMHDR, LRESULT *pResult);
  168. afx_msg void OnToolBarChange(NMHDR *pNMHDR, LRESULT *pResult);
  169. afx_msg void OnToolBarBeginAdjust(NMHDR *pNMHDR, LRESULT *pResult);
  170. afx_msg void OnToolBarCustomHelp(NMHDR *pNMHDR, LRESULT *pResult);
  171. afx_msg void OnToolBarEndAdjust(NMHDR *pNMHDR, LRESULT *pResult);
  172. afx_msg void OnToolBarGetButtonInfo(NMHDR *pNMHDR, LRESULT *pResult);
  173. afx_msg void OnToolBarReset(NMHDR *pNMHDR, LRESULT *pResult);
  174. afx_msg LRESULT OnCustomize(WPARAM,LPARAM) ;
  175.     afx_msg void OnInitCustomize( NMHDR* pNMHDR, LRESULT* pResult );
  176.     // Saving and restoring toolbar
  177.     afx_msg void OnSave( NMHDR* pNMHDR, LRESULT* pResult );
  178.     afx_msg void OnRestore( NMHDR* pNMHDR, LRESULT* pResult );
  179. DECLARE_MESSAGE_MAP()
  180. DECLARE_DYNCREATE(CToolBarEx)  
  181. };
  182. // CDockBarEx Class
  183. class  CDockBarEx : public CDockBar
  184. {
  185. DECLARE_DYNAMIC(CDockBarEx)
  186. public:
  187. // Default constructor
  188. //
  189. CDockBarEx();
  190. // Virtual destructor
  191. //
  192. virtual ~CDockBarEx();
  193. // Overrides
  194. // ClassWizard generated virtual function overrides
  195. //{{AFX_VIRTUAL(CDockBarEx)
  196. public:
  197. virtual CSize CalcFixedLayout(BOOL bStretch, BOOL bHorz);
  198. //}}AFX_VIRTUAL
  199. // Generated message map functions
  200. protected:
  201. //{{AFX_MSG(CDockBarEx)
  202. // NOTE - the ClassWizard will add and remove member functions here.
  203. //    DO NOT EDIT what you see in these blocks of generated code !
  204. //}}AFX_MSG
  205. DECLARE_MESSAGE_MAP()
  206. };
  207. /////////////////////////////////////////////////////////////////////////////
  208. void FrameEnableDocking(CFrameWnd * pFrame, DWORD dwDockStyle);
  209. /////////////////////////////////////////////////////////////////////////////
  210. //{{AFX_INSERT_LOCATION}}
  211. // Microsoft Visual C++ will insert additional declarations immediately before the previous line.
  212. #endif // !defined(_TOOLBAREX_H_)