ToolbarEx.h
上传用户:shuini
上传日期:2007-02-05
资源大小:103k
文件大小:9k
- #if !defined(_TOOLBAREX_H_)
- #define _TOOLBAREX_H_
- #if _MSC_VER > 1000
- #pragma once
- #endif // _MSC_VER > 1000
- // ToolBarEx.h : header file
- //
- #include <afxtempl.h>
- #ifndef __AFXPRIV_H__
- #include <afxpriv.h>
- #endif
- #include "CustomizeDialog.h"
- ////////////////////////////////////////////////////////////////////////////
- // I got some pieces of this code from MSJ Articles of Paul Dilascia
- //
- /////////////////////////////////////////////////////////////////////////////
- // CToolBarEx window
- #define ID_CUSTOMIZE_BAR 0xFF
- /////////////////////////////////////////////////////////////////////////////
- // COMCTL32 v5.81 specific stuff:
- #ifndef TBSTYLE_EX_MIXEDBUTTONS
- #define TBSTYLE_EX_MIXEDBUTTONS 0x00000008
- #define TBSTYLE_EX_HIDECLIPPEDBUTTONS 0x00000010
- #define CCM_SETVERSION (CCM_FIRST+7)
- #define CCM_GETVERSION (CCM_FIRST+8)
- #endif // !TBSTYLE_EX_MIXEDBUTTONS
- #ifndef BTNS_SHOWTEXT
- #define BTNS_SHOWTEXT 0x0040
- #endif // !BTNS_SHOWTEXT
- #ifndef BTNS_WHOLEDROPDOWN
- #define BTNS_WHOLEDROPDOWN 0x0080
- #endif // !BTNS_WHOLEDROPDOWN
- #ifndef TBN_SAVE
- #define TBN_SAVE (TBN_FIRST - 22)
- #define TBN_RESTORE (TBN_FIRST - 21)
- #ifndef TBN_INITCUSTOMIZE
- #define TBN_INITCUSTOMIZE (TBN_FIRST - 23)
- #define TBNRF_HIDEHELP 0x00000001
- #endif // !TBN_INITCUSTOMIZE
- typedef struct tagNMTBSAVE
- {
- NMHDR hdr;
- DWORD* pData;
- DWORD* pCurrent;
- UINT cbData;
- int iItem;
- int cButtons;
- TBBUTTON tbButton;
- } NMTBSAVE, *LPNMTBSAVE;
- typedef struct tagNMTBRESTORE
- {
- NMHDR hdr;
- DWORD* pData;
- DWORD* pCurrent;
- UINT cbData;
- int iItem;
- int cButtons;
- int cbBytesPerRecord;
- TBBUTTON tbButton;
- } NMTBRESTORE, *LPNMTBRESTORE;
- #endif // !TBN_SAVE
- class CToolBarEx : public CToolBar
- {
- protected:
- friend class CCustomizeDialog;
- // Inner structs
- struct CToolBarButtonInfo
- {
- TBBUTTON tbButton; // information regarding the button
- CString btnText; // text for the button
- BOOL bInitiallyVisible ; // Button intially vible
- // BOOL bShowOnRight; // Visible on Selective Right
- };
- // One of these for each drop-down button
- struct CDropDownButtonInfo
- {
- CDropDownButtonInfo * pNext;
- UINT idButton; // command ID of button
- UINT idMenu; // popup menu to display
- } ;
- // Construction
- public:
- CToolBarEx();
- typedef CArray<CToolBarButtonInfo,CToolBarButtonInfo &> ToolBarInfoArray;
- // Attributes
- public:
- const static CSize m_szImageSmall;
- const static CSize m_szImageLarge;
- const static TextOptions m_eInitialTextOptions;
- const static IconOptions m_eInitialIconOptions;
- // Operations
- public:
- // this member function is called to insert a control into the toolbar
- // and returns a pointer to the newly inserted control
- //
- CWnd* InsertControl(CRuntimeClass* pClass,LPCTSTR lpszWindowName,CRect& rect,UINT nID,DWORD dwStyle );
- CWnd* InsertControl(CWnd* pCtrl,CRect& rect,UINT nID);
-
- // call to add drop-down buttons
- BOOL AddDropDownButton(UINT nIDButton,UINT nIDMenu,BOOL bArrow=TRUE);
-
- // state functions
- void SaveState();
- void RestoreState();
- //Call this function to set the customization, after you have done the changes to the toolbar.
- void SetToolBarInfoForCustomization(const ToolBarInfoArray * pAdditional=NULL);
- // Overrides
- // ClassWizard generated virtual function overrides
- //{{AFX_VIRTUAL(CToolBarEx)
- //}}AFX_VIRTUAL
- // Implementation
- public:
- BOOL MarkDefaultState();
- void Customize();
- TextOptions GetTextOptions() { return m_eTextOptions; }
- void SetTextOptions(TextOptions txOptions,BOOL bUpdate=TRUE);
- IconOptions GetIconOptions() { return m_eIconOptions; }
- void SetIconOptions(IconOptions txOptions,BOOL bUpdate=TRUE);
- BOOL SetDropDownButton(UINT nID,BOOL bArrow);
- BOOL LoadBitmap(LPCTSTR lpszResourceName);
- BOOL LoadBitmap(UINT nIDResource) { return LoadBitmap(MAKEINTRESOURCE(nIDResource)); }
- virtual ~CToolBarEx();
- // BOOL m_bShowDropdownArrowWhenVertical; // true to display a drop arrow when docked vertical
- BOOL m_bHideChildWndOnVertical; // Hide the windows when docked vertical
- // Generated message map functions
- protected:
- BOOL ShowContextMenu(CPoint pt);
- UINT m_nResButtons;
- BOOL SetIconOptionBitmap(IconOptions eIconOptions);
- virtual BOOL HasButtonText(int nID);
- static CCustomizeDialog* m_pCustomizeDlg;
- static HHOOK m_hCBTHook;
- TextOptions m_eTextOptions;
- IconOptions m_eIconOptions;
- BOOL IsVertDocked();
- void PositionControls();
- CObList* m_pControls; // CObject pointer list which contains controls added to the toolbar
- CDropDownButtonInfo* m_pDropButtons; // list of dropdown button/menu pairs
- static int m_nBarNumber; // used for customization, holds bar number for restoration.
- CString m_strSubKey; // used for customization, holds registry subkey name.
- CString m_strValueName; // used for customization, holds registry value.
- ToolBarInfoArray m_ToolBarInfo;
- COLORREF m_clrBtnHilight;
- COLORREF m_clrBtnShadow;
- COLORREF m_clrBtnFace;
- static LRESULT CALLBACK CBTProc( int nCode, WPARAM wParam, LPARAM lParam );
- // Find buttons structure for given ID
- CDropDownButtonInfo * FindDropDownButtonInfo(UINT nID);
- BOOL OnToolBarBtnDropDown(NMHDR* pNMHDR, LRESULT* pRes);
- BOOL OnDropDownButtonInfo(const NMTOOLBAR& nmtb, UINT nID, CRect rc);
- //Chenged Functions
- CSize GetButtonSize(TBBUTTON* pData, int iButton,DWORD dwMode);
- CSize CalcSize(TBBUTTON* pData, int nCount,DWORD dwMode);
- int WrapToolBar(TBBUTTON* pData, int nCount, int nWidth,DWORD dwMode);
- //Copied Functions
- void SizeToolBar(TBBUTTON* pData, int nCount, int nLength, BOOL bVert, DWORD dwMode);
- CSize CalcLayout(DWORD dwMode, int nLength=-1);
- virtual CSize CalcFixedLayout(BOOL bStretch, BOOL bHorz);
- virtual CSize CalcDynamicLayout(int nLength, DWORD dwMode);
- void _GetButton(int nIndex, TBBUTTON* pButton) const;
- void _SetButton(int nIndex, TBBUTTON* pButton);
- void Draw3DBorders(CDC * pDC, CRect & rect) ;
- virtual BOOL OnChildNotify( UINT message, WPARAM wParam, LPARAM lParam, LRESULT* pLResult )
- {
- if (message == WM_COMMAND)
- {
- }
- return CToolBar::OnChildNotify( message, wParam, lParam, pLResult );
- }
-
- //{{AFX_MSG(CToolBarEx)
- afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
- afx_msg void OnPaint();
- afx_msg void OnSysColorChange();
- afx_msg void OnContextMenu(CWnd* pWnd, CPoint point);
- afx_msg void OnNcPaint();
- //}}AFX_MSG
- afx_msg void OnToolBarQueryDelete(NMHDR *pNMHDR, LRESULT *pResult);
- afx_msg void OnToolBarQueryInsert(NMHDR *pNMHDR, LRESULT *pResult);
- afx_msg void OnToolBarChange(NMHDR *pNMHDR, LRESULT *pResult);
- afx_msg void OnToolBarBeginAdjust(NMHDR *pNMHDR, LRESULT *pResult);
- afx_msg void OnToolBarCustomHelp(NMHDR *pNMHDR, LRESULT *pResult);
- afx_msg void OnToolBarEndAdjust(NMHDR *pNMHDR, LRESULT *pResult);
- afx_msg void OnToolBarGetButtonInfo(NMHDR *pNMHDR, LRESULT *pResult);
- afx_msg void OnToolBarReset(NMHDR *pNMHDR, LRESULT *pResult);
- afx_msg LRESULT OnCustomize(WPARAM,LPARAM) ;
- afx_msg void OnInitCustomize( NMHDR* pNMHDR, LRESULT* pResult );
- afx_msg void OnCustomDraw( NMHDR* pNMHDR, LRESULT* pResult );
- // Saving and restoring toolbar
- afx_msg void OnSave( NMHDR* pNMHDR, LRESULT* pResult );
- afx_msg void OnRestore( NMHDR* pNMHDR, LRESULT* pResult );
- DECLARE_MESSAGE_MAP()
- DECLARE_DYNCREATE(CToolBarEx)
- };
- // CDockBarEx Class
- class CDockBarEx : public CDockBar
- {
- DECLARE_DYNAMIC(CDockBarEx)
- public:
- // Default constructor
- //
- CDockBarEx();
- // Virtual destructor
- //
- virtual ~CDockBarEx();
- // Overrides
- // ClassWizard generated virtual function overrides
- //{{AFX_VIRTUAL(CDockBarEx)
- public:
- virtual CSize CalcFixedLayout(BOOL bStretch, BOOL bHorz);
- //}}AFX_VIRTUAL
- // Generated message map functions
- protected:
- //{{AFX_MSG(CDockBarEx)
- // NOTE - the ClassWizard will add and remove member functions here.
- // DO NOT EDIT what you see in these blocks of generated code !
- //}}AFX_MSG
- DECLARE_MESSAGE_MAP()
- };
- /////////////////////////////////////////////////////////////////////////////
- void FrameEnableDocking(CFrameWnd * pFrame, DWORD dwDockStyle);
- /////////////////////////////////////////////////////////////////////////////
- //{{AFX_INSERT_LOCATION}}
- // Microsoft Visual C++ will insert additional declarations immediately before the previous line.
- #endif // !defined(_TOOLBAREX_H_)