You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
mitlib.pub/MITLIB/GuiDLL/OOExToolBar.h

371 lines
15 KiB
C++

// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
// = oooo oooo
// = oooooo oooooo
// = oo oo oo oo
// = oo oo oo oo
// = oooooo oooooo
// = oooo oooo Copyright ( c ) The Old Ones 1998
// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
// Start =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
// General information section.
// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
// $Author:yongkiang$ User who last changed the file
// $Date:1/2/2013 12:16:41 PM$ Date and time of last check in
// $Revision:1.0$ Visual SourceSafe version number
// $Workfile:: OOExToolBar.h $ Filename
// End =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
// Start =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
// History section.
// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
// $History:: $
// End =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
// @doc
// @module OOExToolBar.h |
// This module include an improved tool bar.
// @end =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
// Start =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
// Definition to avoid multiple include.
// ------------------------------------------------------------------------
#if !defined(_OOExToolBar_H_)
#define _OOExToolBar_H_
#if _MSC_VER >= 1000
#pragma once
#endif // _MSC_VER >= 1000
// @end =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
// Start =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
// Include file section.
// ------------------------------------------------------------------------
// Extended bitmap class.
// @end =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
#ifndef TB_SETEXTENDEDSTYLE
#define TB_SETEXTENDEDSTYLE (WM_USER + 84) // For TBSTYLE_EX_*
#define TBSTYLE_EX_DRAWDDARROWS 0x00000001
#endif
// Start =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
// Class declaration.
// ------------------------------------------------------------------------
#define NB_POSSIBLE_MODE 7 // JJ: Increased from 6 to 7
// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
// @class: (FUNCTIONAL)
// This class manage an extended toolbar.
// @base public | CToolBar
// @end =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
class COOExToolBar : public CToolBar
{
// --------------------------------------------------------------------
// @group Macro definition.
// --------------------------------------------------------------------
DECLARE_DYNAMIC(COOExToolBar)
// --------------------------------------------------------------------
// @group Structure definition.
// --------------------------------------------------------------------
private:
public:
enum ImageMode_ {
SmallHot, SmallStandard, SmallDisable,
LargeHot, LargeStandard, LargeDisable
};
protected:
// --------------------------------------------------------------------
// @group Data definition.
// --------------------------------------------------------------------
private:
// @Access Other usefull needed flag.
bool m_bOldFloating; // @CMember To patch the drawing when vertical.<nl>
public:
protected:
// @Access ToolBar attribute.
UINT m_nShowIconMode; // @CMember Small or large icon.
bool m_bShowIconText; // @CMember To enable or disable the icon text.<nl>
// @Access Size data.
int m_nDropButtonSize; // @CMember The drop button width.
int m_nTextHeight; // @CMember The text height.
int m_nTextWidth; // @CMember The text width.
CSize m_SmallIconSize; // @CMember The size of the icon in small mode.
CSize m_LargeIconSize; // @CMember The size of the icon in large mode.<nl>
// gary, 22Jul09, configurable button size
CSize m_buttonSize;
// @Access The image list.
CImageList m_ImageList[ NB_POSSIBLE_MODE ]; // @CMember The list of image.
// --------------------------------------------------------------------
// @group Implementation Method definition.
// --------------------------------------------------------------------
private:
// @Access Usefull private method.
// @CMember Method to calculate the current size of the button.
CSize CalcButtonSize(void);
public:
// @Access Class Initialization method.
COOExToolBar(void); // @CMember Constructor.
~COOExToolBar(void); // @CMember Destructor.<nl>
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:
// @Access Usefull protected method.
void DrawGripper(CDC& dc) const; // @CMember To draw the gripper.<nl>
// @Access Protected method to set the image information.
void SetDisableImageList(CImageList* pList); // @CMember To set the disable image list.
void SetHotImageList(CImageList* pList); // @CMember To set the hoover image list.
void SetStandardImageList(CImageList* pList); // @CMember To set the normal image list.<nl>
// @Access Image list initialization method.
virtual void AssignImageList(void); // @CMember Set the correct image list in the control.
// --------------------------------------------------------------------
// @group Functionnal Method definition.
// --------------------------------------------------------------------
private:
public:
// @Access Loading information.
void ResizeToolBar(void); // @CMember To set the size of the toolbar.
virtual BOOL LoadToolBar(UINT _ResourceId); // @CMember To load the toolbar information.
// @Access To set the image information.
void SetImageList(ImageMode_ _ImageMode, CImageList& _rList); // @CMember To set the small disable image list.
// @Access Image list initialization method.
virtual void InitImageList(void); // @CMember Set the correct image list in the control.
// @Access Mode related method.
void SetIconMode(UINT _nShowIconMode); // @CMember To view large or small icon.
UINT GetIconMode(void) const; // @CMember To get the large or small icon mode.
void SetTextMode(bool _bShowIconText); // @CMember To set the text on or off.
bool GetTextMode(void) const; // @CMember To get the text on or off.<nl>
// @Access Usefull button method.
void SetButtonDropDown(int nID); // @CMember To set a drop arrow for a given button.<nl>
protected:
// --------------------------------------------------------------------
// @group MFC Definition.
// --------------------------------------------------------------------
// Overrides
// ClassWizard generated virtual function overrides
// {{AFX_VIRTUAL( COOExToolBar )
public:
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);
// }}AFX_VIRTUAL
// --------------------------------------------------------------------
// @group Generated message map functions.
// --------------------------------------------------------------------
protected:
// {{AFX_MSG( COOExToolBar )
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);
afx_msg void OnRButtonDown(UINT nFlags, CPoint point);
// }}AFX_MSG
DECLARE_MESSAGE_MAP()
};
// @end =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
// @class: (FUNCTIONAL)
// This class manage an extended command ui.
// @base public | CCmdUI
// @end =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
class CCoolCmdUI : public CCmdUI // class private to this file !
{
public: // re-implementations only
virtual void Enable(BOOL bOn);
virtual void SetCheck(int nCheck);
};
// Start =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
// Class declaration.
// ------------------------------------------------------------------------
// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
// @class: (FUNCTIONAL)
// This class manage an extended toolbar based on bitmap.
// @base public | COOExToolbar
// @end =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
class COOBmpToolBar : public COOExToolBar
{
// --------------------------------------------------------------------
// @group Macro definition.
// --------------------------------------------------------------------
DECLARE_DYNAMIC(COOBmpToolBar)
// --------------------------------------------------------------------
// @group Structure definition.
// --------------------------------------------------------------------
private:
public:
class CExBitmap
{
public:
UINT m_nResourceId;
COLORREF m_clrTransparent;
};
protected:
// --------------------------------------------------------------------
// @group Data definition.
// --------------------------------------------------------------------
private:
// @Access The bitmap image.
CExBitmap m_256Image[ NB_POSSIBLE_MODE ]; // @CMember The 256 color bitmap id list.
CExBitmap m_16Image[ NB_POSSIBLE_MODE ]; // @CMember The 16 color bitmap id list.
public:
protected:
// --------------------------------------------------------------------
// @group Implementation Method definition.
// --------------------------------------------------------------------
private:
// @Access Usefull private method.
// @CMember Generic method to build an image list.
void BuildImageList(CImageList& _rImageList, const CExBitmap& _rBitmap);
public:
// @Access Class Initialization method.
COOBmpToolBar(void); // @CMember Constructor.
~COOBmpToolBar(void); // @CMember Destructor.<nl>
protected:
// --------------------------------------------------------------------
// @group Functionnal Method definition.
// --------------------------------------------------------------------
private:
public:
// @Access Bitmap adding method.
// @CMember To set the small disable bitmap.
void SetBitmap(UINT _nBmpId, ImageMode_ _ImageMode, COLORREF _clrBk, bool _b256 = true);
// @Access Image list initialization method.
virtual void InitImageList(void); // @CMember Set the correct image list in the control.
protected:
// --------------------------------------------------------------------
// @group MFC Definition.
// --------------------------------------------------------------------
// Overrides
// ClassWizard generated virtual function overrides
// {{AFX_VIRTUAL( COOBmpToolBar )
public:
protected:
// }}AFX_VIRTUAL
// --------------------------------------------------------------------
// @group Generated message map functions.
// --------------------------------------------------------------------
protected:
// {{AFX_MSG( COOBmpToolBar )
// }}AFX_MSG
DECLARE_MESSAGE_MAP()
};
// @end =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
// Start =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
// Class declaration.
// ------------------------------------------------------------------------
// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
// @class: (FUNCTIONAL)
// This class manage an extended toolbar based on bitmap.
// @base public | COOExToolbar
// @end =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
class COOIconToolBar : public COOExToolBar
{
// --------------------------------------------------------------------
// @group Macro definition.
// --------------------------------------------------------------------
DECLARE_DYNAMIC(COOIconToolBar)
// --------------------------------------------------------------------
// @group Structure definition.
// --------------------------------------------------------------------
private:
public:
protected:
// --------------------------------------------------------------------
// @group Data definition.
// --------------------------------------------------------------------
private:
public:
protected:
// --------------------------------------------------------------------
// @group Implementation Method definition.
// --------------------------------------------------------------------
private:
// @Access Private usefull method.
HICON ConvertIconToGrayScale(HICON _hIcon, CSize _sizeImage); // @CMember To convert the given icon into a gray scale icon.
public:
// @Access Class Initialization method.
COOIconToolBar(void); // @CMember Constructor.
~COOIconToolBar(void); // @CMember Destructor.<nl>
protected:
// --------------------------------------------------------------------
// @group Functionnal Method definition.
// --------------------------------------------------------------------
private:
public:
// @Access Icon adding method.
// @CMember To add icon.
void SetIcon(UINT _nStandardIcon, UINT _nDisableIcon = 0, UINT _nHotIcon = 0);
protected:
// --------------------------------------------------------------------
// @group MFC Definition.
// --------------------------------------------------------------------
// Overrides
// ClassWizard generated virtual function overrides
// {{AFX_VIRTUAL( COOIconToolBar )
public:
protected:
// }}AFX_VIRTUAL
// --------------------------------------------------------------------
// @group Generated message map functions.
// --------------------------------------------------------------------
protected:
// {{AFX_MSG( COOIconToolBar )
// }}AFX_MSG
DECLARE_MESSAGE_MAP()
};
// @end =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
#endif // #define _OOExToolBar_H_