📄 bcgptoolbar.h
字号:
//*******************************************************************************
// COPYRIGHT NOTES
// ---------------
// This is a part of the BCGControlBar Library
// Copyright (C) 1998-2000 BCGSoft Ltd.
// All rights reserved.
//
// This source code can be used, distributed or modified
// only under terms and conditions
// of the accompanying license agreement.
//*******************************************************************************
//
// bcgtoolbar.h : definition of CBCGPToolBar
//
// This code is based on the Microsoft Visual C++ sample file
// TOOLBAR.C from the OLDBARS example
//
#ifndef _TOOLBAR_H_
#define _TOOLBAR_H_
#ifndef __AFXTEMPL_H__
#include "afxtempl.h"
#endif
#include "BCGCBPro.h"
#include "BCGPToolbarDropTarget.h"
#include "BCGPToolbarDropSource.h"
#include "BCGPToolBarImages.h"
#include "BCGPToolbarButton.h"
#include "BCGPControlBarImpl.h"
#include "CmdUsageCount.h"
#include "BCGPCommandManager.h"
#include "BCGPVisualManager.h"
#include "BCGGlobals.h"
#include "BCGPBaseToolBar.h"
class CBCGPToolbarMenuButton;
class CCustomizeButton;
class CBCGPRegistry;
//-----------------------------------------------
// CBCGPToolbar LoadBitmap/LoadToolbar parameters:
//-----------------------------------------------
class BCGCBPRODLLEXPORT CBCGPToolBarParams
{
public:
CBCGPToolBarParams();
UINT m_uiColdResID; // Toolbar regular images
UINT m_uiHotResID; // Toolbar "hot" images
UINT m_uiDisabledResID; // Toolbar disabled images
UINT m_uiLargeColdResID; // Toolbar large regular images
UINT m_uiLargeHotResID; // Toolbar large "hot" images
UINT m_uiLargeDisabledResID; // Toolbar large disabled images
UINT m_uiMenuResID; // Menu images
UINT m_uiMenuDisabledResID; // Menu disabled images
};
//----------------------------------
// BCGPToolbar notification messages:
//----------------------------------
BCGCBPRODLLEXPORT extern UINT BCGM_TOOLBARMENU;
BCGCBPRODLLEXPORT extern UINT BCGM_CUSTOMIZETOOLBAR;
BCGCBPRODLLEXPORT extern UINT BCGM_CREATETOOLBAR;
BCGCBPRODLLEXPORT extern UINT BCGM_DELETETOOLBAR;
BCGCBPRODLLEXPORT extern UINT BCGM_CUSTOMIZEHELP;
BCGCBPRODLLEXPORT extern UINT BCGM_RESETTOOLBAR;
BCGCBPRODLLEXPORT extern UINT BCGM_RESETMENU;
BCGCBPRODLLEXPORT extern UINT BCGM_SHOWREGULARMENU;
BCGCBPRODLLEXPORT extern UINT BCGM_RESETCONTEXTMENU;
BCGCBPRODLLEXPORT extern UINT BCGM_RESETKEYBOARD;
BCGCBPRODLLEXPORT extern UINT BCGM_RESETRPROMPT;
#define LINE_OFFSET 5
class BCGCBPRODLLEXPORT CBCGPToolBar : public CBCGPBaseToolBar
{
friend class CBCGPToolbarDropTarget;
friend class CBCGPToolbarsPage;
friend class CBCGPOptionsPage;
friend class CButtonsTextList;
friend class CBCGPCommandManager;
DECLARE_SERIAL(CBCGPToolBar)
//--------------
// Construction:
//--------------
public:
CBCGPToolBar();
virtual BOOL Create(CWnd* pParentWnd,
DWORD dwStyle = dwDefaultToolbarStyle,
UINT nID = AFX_IDW_TOOLBAR);
virtual BOOL CreateEx(CWnd* pParentWnd, DWORD dwCtrlStyle = TBSTYLE_FLAT,
DWORD dwStyle = dwDefaultToolbarStyle,
CRect rcBorders = CRect(1, 1, 1, 1),
UINT nID = AFX_IDW_TOOLBAR);
//----------------------------------------------------------------
// Set toolbar buttons image resources.
// You should use SINGLE CBCGPToolBarImages for ALL your toolbars!
//----------------------------------------------------------------
static BOOL SetUserImages (CBCGPToolBarImages* pUserImages);
virtual void ResetImages (); // Reset all toolbar images exept user-derfined to the default
//------------------------------
// Clear all images except user:
//------------------------------
static void ResetAllImages();
//--------------------------------
// Dimension manipulation methods:
//--------------------------------
static void SetSizes (SIZE sizeButton, SIZE sizeImage);
static void SetMenuSizes (SIZE sizeButton, SIZE sizeImage);
static CSize GetMenuImageSize ();
static CSize GetMenuButtonSize ();
void SetLockedSizes (SIZE sizeButton, SIZE sizeImage);
void SetHeight (int cyHeight);
//-----------------
// Toolbar context:
//-----------------
virtual BOOL LoadBitmap (UINT uiResID, UINT uiColdResID = 0,
UINT uiMenuResID = 0, BOOL bLocked = FALSE,
UINT uiDisabledResID = 0, UINT uiMenuDisabledResID = 0);
virtual BOOL LoadToolBar (UINT uiResID, UINT uiColdResID = 0,
UINT uiMenuResID = 0, BOOL bLocked = FALSE,
UINT uiDisabledResID = 0, UINT uiMenuDisabledResID = 0,
UINT uiHotResID = 0);
virtual BOOL LoadBitmapEx (CBCGPToolBarParams& params, BOOL bLocked = FALSE);
virtual BOOL LoadToolBarEx (UINT uiToolbarResID, CBCGPToolBarParams& params,
BOOL bLocked = FALSE);
//----------------------------
// Toolbar buttons add/remove:
//----------------------------
BOOL SetButtons(const UINT* lpIDArray, int nIDCount, BOOL bRemapImages = TRUE);
virtual int InsertButton (const CBCGPToolbarButton& button, int iInsertAt = -1);
int InsertSeparator (int iInsertAt = -1);
int ReplaceButton (UINT uiCmd, const CBCGPToolbarButton& button, BOOL bAll = FALSE);
virtual BOOL RemoveButton (int iIndex);
virtual void RemoveAllButtons ();
static BOOL IsLastCommandFromButton (CBCGPToolbarButton* pButton);
static BOOL AddToolBarForImageCollection (UINT uiResID, UINT uiBmpResID = 0,
UINT uiColdResID = 0, UINT uiMenuResID = 0,
UINT uiDisabledResID = 0, UINT uiMenuDisabledResID = 0);
static void SetNonPermittedCommands (CList<UINT, UINT>& lstCommands);
static BOOL IsCommandPermitted (UINT uiCmd)
{
return m_lstUnpermittedCommands.Find (uiCmd) == NULL;
}
static void SetBasicCommands (CList<UINT, UINT>& lstCommands);
static void AddBasicCommand (UINT uiCmd);
static BOOL IsBasicCommand (UINT uiCmd)
{
return m_lstBasicCommands.Find (uiCmd) != NULL;
}
static const CList<UINT, UINT>& GetBasicCommands ()
{
return m_lstBasicCommands;
}
static BOOL IsCommandRarelyUsed (UINT uiCmd);
static void AddCommandUsage (UINT uiCommand);
static BOOL SetCommandUsageOptions (UINT nStartCount, UINT nMinUsagePercentage = 5);
virtual int GetRowHeight () const
{
if (m_bDrawTextLabels)
{
ASSERT (m_nMaxBtnHeight > 0);
return m_nMaxBtnHeight;
}
return max (globalData.GetTextHeight (m_dwStyle & CBRS_ORIENT_HORZ),
(m_bMenuMode ?
(m_sizeMenuButton.cy > 0 ?
m_sizeMenuButton.cy : m_sizeButton.cy) :
GetButtonSize ().cy));
}
virtual int GetColumnWidth () const
{
return m_bMenuMode ?
m_sizeMenuButton.cx > 0 ?
m_sizeMenuButton.cx : m_sizeButton.cx :
GetButtonSize ().cx;
}
virtual BOOL IsButtonExtraSizeAvailable () const
{
return TRUE;
}
static void SetHelpMode (BOOL bOn = TRUE);
virtual void Deactivate ();
virtual void RestoreFocus ();
void SetToolBarBtnText (UINT nBtnIndex,
LPCTSTR szText = NULL,
BOOL bShowText = TRUE,
BOOL bShowImage = TRUE);
void EnableLargeIcons (BOOL bEnable);
static void SetLargeIcons (BOOL bLargeIcons = TRUE);
static BOOL IsLargeIcons ()
{
return m_bLargeIcons;
}
CSize GetButtonSize () const
{
CSize size = m_bLocked ?
m_bLargeIconsAreEnbaled ? m_sizeCurButtonLocked : m_sizeButtonLocked :
m_bLargeIconsAreEnbaled ? m_sizeCurButton : m_sizeButton;
if (IsButtonExtraSizeAvailable ())
{
size += CBCGPVisualManager::GetInstance ()->GetButtonExtraBorder ();
}
return size;
}
CSize GetImageSize () const
{
return m_bLocked ?
m_bLargeIconsAreEnbaled ? m_sizeCurImageLocked : m_sizeImageLocked :
m_bLargeIconsAreEnbaled ? m_sizeCurImage : m_sizeImage;
}
BOOL IsButtonHighlighted (int iButton) const;
//------------
// Attributes:
//------------
public:
BOOL IsLocked () const
{
return m_bLocked;
}
UINT GetResourceID () const
{
return m_uiOriginalResID;
}
virtual BOOL IsResourceChanged () const
{
return m_bResourceWasChanged;
}
static const CObList& GetAllToolbars ();
// standard control bar things
int CommandToIndex(UINT nIDFind, int iIndexFirst = 0) const;
UINT GetItemID(int nIndex) const;
virtual void GetItemRect(int nIndex, LPRECT lpRect) const;
virtual void GetInvalidateItemRect(int nIndex, LPRECT lpRect) const;
UINT GetButtonStyle(int nIndex) const;
virtual void SetButtonStyle(int nIndex, UINT nStyle);
int GetCount () const;
int ButtonToIndex(const CBCGPToolbarButton* pButton) const;
CBCGPToolbarButton* GetButton (int iIndex) const;
const CObList& GetAllButtons() const { return m_Buttons; }
const CObList& GetOrigButtons() const { return m_OrigButtons; }
const CObList& GetOrigResetButtons() const { return m_OrigResetButtons; }
// Find all buttons specified by the given command ID from the all
// toolbars:
static int GetCommandButtons (UINT uiCmd, CObList& listButtons);
static BOOL SetCustomizeMode (BOOL bSet = TRUE);
static BOOL IsCustomizeMode ()
{
return m_bCustomizeMode;
}
BOOL IsUserDefined () const;
static CBCGPToolBar* FromHandlePermanent (HWND hwnd);
static CBCGPToolBarImages* GetImages ()
{
return &m_Images;
}
static CBCGPToolBarImages* GetUserImages ()
{
return m_pUserImages;
}
static int GetDefaultImage (UINT uiID)
{
int iImage;
if (m_DefaultImages.Lookup (uiID, iImage))
{
return iImage;
}
return -1;
}
int GetImagesOffset () const
{
return m_iImagesOffset;
}
CBCGPToolbarButton* GetHighlightedButton () const;
static void SetHotTextColor (COLORREF clrText);
static COLORREF GetHotTextColor ();
void SetHotBorder (BOOL bShowHotBorder)
{
m_bShowHotBorder = bShowHotBorder;
}
BOOL GetHotBorder () const
{
return m_bShowHotBorder;
}
void SetGrayDisabledButtons (BOOL bGrayDisabledButtons)
{
m_bGrayDisabledButtons = bGrayDisabledButtons;
}
BOOL GetGrayDisabledButtons () const
{
return m_bGrayDisabledButtons;
}
//------------------------------------------------------
// Enable/disable quick customization mode ("Alt+drag"):
//------------------------------------------------------
static void EnableQuickCustomization (BOOL bEnable = TRUE)
{
m_bAltCustomization = bEnable;
}
static void SetLook2000 (BOOL bLook2000 = TRUE);
static BOOL IsLook2000 ();
virtual void EnableDocking (DWORD dwAlignment);
void EnableCustomizeButton (BOOL bEnable, UINT uiCustomizeCmd, const CString& strCustomizeText, BOOL bQuickCustomize = TRUE);
void EnableCustomizeButton (BOOL bEnable, UINT uiCustomizeCmd, UINT uiCustomizeTextResId, BOOL bQuickCustomize = TRUE);
BOOL IsExistCustomizeButton()
{
if(m_pCustomizeBtn == NULL)
{
return FALSE;
}
return TRUE;
}
CCustomizeButton* GetCustomizeButton()
{
return m_pCustomizeBtn;
}
void EnableTextLabels (BOOL bEnable = TRUE);
virtual BOOL AllowChangeTextLabels () const
{
return TRUE;
}
BOOL AreTextLabels () const
{
return m_bTextLabels;
}
virtual BOOL OnBeforeRemoveButton (CBCGPToolbarButton* /*pButton*/, DROPEFFECT /*dropEffect*/)
{
return TRUE;
}
void SetMaskMode (BOOL bMasked)
{
m_bMasked = bMasked;
}
void SetPermament (BOOL bPermament = TRUE)
{
m_bPermament = bPermament;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -