extoolbar.h

来自「c++系统开发实例精粹内附的80例源代码 环境:windows2000,c++」· C头文件 代码 · 共 200 行

H
200
字号
//////////////////////////////////////////////////////////////////////
// FileFury
// Copyright (c) 2000 Tenebril Incorporated
// All rights reserved.
//
// This source code is governed by the Tenebril open source
// license (http://www.tenebril.com/developers/opensource/license.html)
//
// For more information on this and other open source applications,
// visit the Tenebril OpenSource page:
//       http://www.tenebril.com/developers/opensource
//
//////////////////////////////////////////////////////////////////////

#if !defined( _OOExToolBar_H_ )
#define _OOExToolBar_H_

#if _MSC_VER >= 1000
#pragma once
#endif // _MSC_VER >= 1000

#ifndef TB_SETEXTENDEDSTYLE
#define TB_SETEXTENDEDSTYLE     (WM_USER + 84)
#define TBSTYLE_EX_DRAWDDARROWS 0x00000001
#endif

#define NB_POSSIBLE_MODE 6
class CExToolBar : public CToolBar
{
	DECLARE_DYNAMIC( CExToolBar )
    
    private:
    public:
        enum ImageMode_ { SmallHot, SmallStandard, SmallDisable,
                          LargeHot, LargeStandard, LargeDisable };
    protected:

    private:
        bool m_bOldFloating;

    public:
    protected:
        UINT m_nShowIconMode;
        bool m_bShowIconText;

        int m_nDropButtonSize;
        int m_nTextHeight;    
        int m_nTextWidth;     
        CSize m_SmallIconSize;
        CSize m_LargeIconSize;

        CImageList m_ImageList[ NB_POSSIBLE_MODE ];

    private:
        CSize CalcButtonSize( void );

    public:
        CExToolBar( void );
        ~CExToolBar( void );

    	void SizeToolBar(TBBUTTON* pData, int nCount, int nLength, BOOL bVert = FALSE);
	    void GetButton(int nIndex, TBBUTTON* pButton) const;
	    void SetButton(int nIndex, TBBUTTON* pButton);
    	
    	int WrapToolBar(TBBUTTON* pData, int nCount, int nWidth);
	    CSize CalcSize(TBBUTTON* pData, int nCount);
    	CSize CalcLayout(DWORD nMode, int nLength = -1);

    protected:
    	void DrawGripper( CDC& dc ) const;

        void SetDisableImageList( CImageList* pList );
        void SetHotImageList( CImageList* pList );    
    	void SetStandardImageList( CImageList* pList );

        virtual void AssignImageList( void );
        
    private:
    public:
        void ResizeToolBar( void );
        virtual BOOL LoadToolBar( UINT _ResourceId );
    
        void SetImageList( ImageMode_ _ImageMode, CImageList& _rList );

        virtual void InitImageList( void );

        void SetIconMode( UINT _nShowIconMode );
        UINT GetIconMode( void ) const;
        void SetTextMode( bool _bShowIconText );
        bool GetTextMode( void ) const;

        void SetButtonDropDown( int nID );

    protected:
        
    	public:
	    	BOOL SetButtonText(int nIndex, LPCTSTR lpszText);
    	    virtual CSize CalcDynamicLayout(int nLength, DWORD dwMode);
        	virtual CSize GetButtonSize(TBBUTTON* pData, int iButton);
	        virtual CSize CalcFixedLayout(BOOL bStretch, BOOL bHorz);
	    protected:
        	virtual void OnUpdateCmdUI( CFrameWnd* pTarget, BOOL bDisableIfNoHndler );	

    protected:
    	afx_msg int OnCreate( LPCREATESTRUCT lpCreateStruct );
    	afx_msg void OnNcCalcSize( BOOL bCalcValidRects, NCCALCSIZE_PARAMS FAR* lpncsp );
    	afx_msg void OnNcPaint( void );
    	afx_msg void OnSysColorChange( void );
        afx_msg void OnWindowPosChanging( WINDOWPOS* lpwndpos );
	    DECLARE_MESSAGE_MAP()
};

class CToolBarCmdUI : public CCmdUI
{
    public:
	    virtual void Enable( BOOL bOn );
    	virtual void SetCheck( int nCheck );
};

class CBmpToolBar : public CExToolBar
{
	DECLARE_DYNAMIC( CBmpToolBar )
    
    private:
    public:
        class CExBitmap
        {
            public:
                UINT m_nResourceId;
                COLORREF m_clrTransparent;
        };

    protected:

    private:
        CExBitmap m_256Image[ NB_POSSIBLE_MODE ];
        CExBitmap m_16Image[ NB_POSSIBLE_MODE ];

    public:
    protected:

    private:
        void BuildImageList( CImageList& _rImageList, const CExBitmap& _rBitmap );

    public:
        CBmpToolBar( void );
        ~CBmpToolBar( void );

    protected:

    private:
    public:
        void SetBitmap( UINT _nBmpId, ImageMode_ _ImageMode, COLORREF _clrBk, bool _b256 = true );     
        
        virtual void InitImageList( void );
        
    protected:
        
    	public:
	    protected:

		protected:
	    DECLARE_MESSAGE_MAP()
};
class CIconToolBar : public CExToolBar
{
	DECLARE_DYNAMIC( CIconToolBar )
    
    private:
    public:
    protected:

    private:
    public:
    protected:

    private:
        HICON ConvertIconToGrayScale( HICON _hIcon, CSize _sizeImage );

    public:
        CIconToolBar( void );
        ~CIconToolBar( void );

    protected:

    private:
    public:
        void SetIcon( UINT _nStandardIcon, UINT _nDisableIcon = 0, UINT _nHotIcon = 0 );
        
    protected:
        
    	public:
	    protected:

	protected:
	    DECLARE_MESSAGE_MAP()
};

#endif

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?