// This is a part of the Microsoft Foundation Classes C++ library.
// Copyright (C) Microsoft Corporation
// All rights reserved.
//
// This source code is only intended as a supplement to the
// Microsoft Foundation Classes Reference and related
// electronic documentation provided with the library.
// See these sources for detailed information regarding the
// Microsoft Foundation Classes product.
#pragma once
#include "afxcontrolbarutil.h"
#include "afxtoolbardroptarget.h"
#include "afxtoolbardropsource.h"
#include "afxtoolbarimages.h"
#include "afxtoolbarbutton.h"
#include "afxcontrolbarimpl.h"
#include "afxcmdusagecount.h"
#include "afxcommandmanager.h"
#include "afxvisualmanager.h"
#include "afxglobals.h"
#include "afxbasetoolbar.h"
#include <__atlmfc_core.h>
#pragma warning(push)
#pragma warning(disable : _ATLMFC_DISABLED_WARNINGS)
#ifdef _AFX_PACKING
#pragma pack(push, _AFX_PACKING)
#endif
#ifdef _AFX_MINREBUILD
#pragma component(minrebuild, off)
#endif
class CMFCToolBarMenuButton;
class CMFCCustomizeButton;
class CSettingsStore;
//-----------------------------------------------
// CMFCToolBar LoadBitmap/LoadToolbar parameters:
//-----------------------------------------------
class CMFCToolBarInfo
{
public:
CMFCToolBarInfo();
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
};
//----------------------------------
// Toolbar notification messages:
//----------------------------------
extern AFX_IMPORT_DATA UINT AFX_WM_TOOLBARMENU;
extern AFX_IMPORT_DATA UINT AFX_WM_CUSTOMIZETOOLBAR;
extern AFX_IMPORT_DATA UINT AFX_WM_CREATETOOLBAR;
extern AFX_IMPORT_DATA UINT AFX_WM_DELETETOOLBAR;
extern AFX_IMPORT_DATA UINT AFX_WM_CUSTOMIZEHELP;
extern AFX_IMPORT_DATA UINT AFX_WM_RESETTOOLBAR;
extern AFX_IMPORT_DATA UINT AFX_WM_RESETMENU;
extern AFX_IMPORT_DATA UINT AFX_WM_SHOWREGULARMENU;
extern AFX_IMPORT_DATA UINT AFX_WM_RESETCONTEXTMENU;
extern AFX_IMPORT_DATA UINT AFX_WM_RESETKEYBOARD;
extern AFX_IMPORT_DATA UINT AFX_WM_RESETRPROMPT;
extern const UINT AFX_ACCELERATOR_TIMER_DELAY;
#define AFX_TOOLBAR_LINE_OFFSET 5
class CMFCToolBar : public CMFCBaseToolBar
{
friend class CMFCToolBarDropTarget;
friend class CMFCToolBarsListPropertyPage;
friend class CMFCToolBarsCommandsListBox;
friend class CMFCCustomizeButton;
friend class CMFCCustomizeMenuButton;
friend class CMFCToolTipCtrl;
DECLARE_SERIAL(CMFCToolBar)
//--------------
// Construction:
//--------------
public:
CMFCToolBar();
virtual BOOL Create(CWnd* pParentWnd, DWORD dwStyle = AFX_DEFAULT_TOOLBAR_STYLE, UINT nID = AFX_IDW_TOOLBAR);
virtual BOOL CreateEx(CWnd* pParentWnd, DWORD dwCtrlStyle = TBSTYLE_FLAT, DWORD dwStyle = AFX_DEFAULT_TOOLBAR_STYLE,
CRect rcBorders = CRect(1, 1, 1, 1), UINT nID = AFX_IDW_TOOLBAR);
//----------------------------------------------------------------
// Set toolbar buttons image resources.
// You should use SINGLE CMFCToolBarImages for ALL your toolbars!
//----------------------------------------------------------------
static BOOL __stdcall SetUserImages(CMFCToolBarImages* pUserImages);
virtual void ResetImages(); // Reset all toolbar images except user-defined to the default
//------------------------------
// Clear all images except user:
//------------------------------
static void __stdcall ResetAllImages();
//--------------------------------
// Dimension manipulation methods:
//--------------------------------
static void __stdcall SetSizes(SIZE sizeButton, SIZE sizeImage);
static void __stdcall SetMenuSizes(SIZE sizeButton, SIZE sizeImage);
static CSize __stdcall GetMenuImageSize();
static CSize __stdcall GetMenuButtonSize();
///
/// Sets the sizes of locked buttons and locked images on the toolbar.
/// Specifies the size of locked toolbar buttons.
/// Specifies the size of locked toolbar images.
/// Specifies whether to scale or not locked toolbar images in high DPI mode.
void SetLockedSizes(SIZE sizeButton, SIZE sizeImage, BOOL bDontScale = FALSE);
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(CMFCToolBarInfo& params, BOOL bLocked = FALSE);
virtual BOOL LoadToolBarEx(UINT uiToolbarResID, CMFCToolBarInfo& params, BOOL bLocked = FALSE);
//----------------------------
// Toolbar buttons add/remove:
//----------------------------
virtual BOOL SetButtons(const UINT* lpIDArray, int nIDCount, BOOL bRemapImages = TRUE);
virtual int InsertButton(const CMFCToolBarButton& button, INT_PTR iInsertAt = -1);
virtual int InsertSeparator(INT_PTR iInsertAt = -1);
int ReplaceButton(UINT uiCmd, const CMFCToolBarButton& button, BOOL bEvery = FALSE);
virtual BOOL RemoveButton(int iIndex);
virtual void RemoveAllButtons();
static BOOL __stdcall IsLastCommandFromButton(CMFCToolBarButton* pButton);
static BOOL __stdcall AddToolBarForImageCollection(UINT uiResID, UINT uiBmpResID = 0, UINT uiColdResID = 0,
UINT uiMenuResID = 0, UINT uiDisabledResID = 0, UINT uiMenuDisabledResID = 0);
static void __stdcall SetNonPermittedCommands(CList& lstCommands);
static BOOL __stdcall IsCommandPermitted(UINT uiCmd) { return m_lstUnpermittedCommands.Find(uiCmd) == NULL; }
static void __stdcall SetBasicCommands(CList& lstCommands);
static void __stdcall AddBasicCommand(UINT uiCmd);
static BOOL __stdcall IsBasicCommand(UINT uiCmd) { return m_lstBasicCommands.Find(uiCmd) != NULL; }
static const CList& __stdcall GetBasicCommands() { return m_lstBasicCommands; }
static BOOL __stdcall IsCommandRarelyUsed(UINT uiCmd);
static void __stdcall AddCommandUsage(UINT uiCommand);
static BOOL __stdcall SetCommandUsageOptions(UINT nStartCount, UINT nMinUsagePercentage = 5);
virtual int GetRowHeight() const;
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 __stdcall SetHelpMode(BOOL bOn = TRUE);
virtual void Deactivate();
virtual void RestoreFocus();
void SetToolBarBtnText(UINT nBtnIndex, LPCTSTR szText = NULL, BOOL bShowText = TRUE, BOOL bShowImage = TRUE);
virtual BOOL CanFocus() const { return FALSE; }
void EnableLargeIcons(BOOL bEnable);
static void __stdcall SetLargeIcons(BOOL bLargeIcons = TRUE);
static BOOL __stdcall IsLargeIcons() { return m_bLargeIcons; }
static void __stdcall AutoGrayInactiveImages(BOOL bEnable = TRUE, int nGrayImagePercentage = 0, BOOL bRedrawAllToolbars = TRUE);
static BOOL __stdcall IsAutoGrayInactiveImages() { return m_bAutoGrayInactiveImages; }
CSize GetButtonSize() const
{
CSize size = m_bLocked ? (m_bLargeIconsAreEnbaled ? m_sizeCurButtonLocked : m_sizeButtonLocked) : (m_bLargeIconsAreEnbaled ? m_sizeCurButton : m_sizeButton);
if (IsButtonExtraSizeAvailable())
{
size += CMFCVisualManager::GetInstance()->GetButtonExtraBorder();
}
return size;
}
CSize GetImageSize() const
{
return m_bLocked ? m_bLargeIconsAreEnbaled ? m_sizeCurImageLocked : m_sizeImageLocked : m_bLargeIconsAreEnbaled ? m_sizeCurImage : m_sizeImage;
}
CSize GetLockedImageSize() const
{
if (!m_bLocked)
{
ASSERT(FALSE);
return CSize(0, 0);
}
return m_sizeImageLocked;
}
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; }
virtual BOOL IsFloating() const { return m_bFloating; }
static const CObList& __stdcall 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 CMFCToolBarButton* pButton) const;
CMFCToolBarButton* 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; }
void SetOrigButtons(const CObList& lstOrigButtons);
// Find all buttons specified by the given command ID from the all toolbars:
static int __stdcall GetCommandButtons(UINT uiCmd, CObList& listButtons);
static BOOL __stdcall SetCustomizeMode(BOOL bSet = TRUE);
static BOOL __stdcall IsCustomizeMode() { return m_bCustomizeMode; }
static BOOL __stdcall IsAltCustomizeMode() { return m_bAltCustomizeMode; }
BOOL IsUserDefined() const;
static CMFCToolBar* __stdcall FromHandlePermanent(HWND hwnd);
static CMFCToolBarImages* __stdcall GetImages() { return &m_Images; }
static CMFCToolBarImages* __stdcall GetColdImages() { return &m_ColdImages; }
static CMFCToolBarImages* __stdcall GetDisabledImages() { return &m_DisabledImages; }
static CMFCToolBarImages* __stdcall GetLargeImages() { return &m_LargeImages; }
static CMFCToolBarImages* __stdcall GetLargeColdImages() { return &m_LargeColdImages; }
static CMFCToolBarImages* __stdcall GetLargeDisabledImages() { return &m_LargeDisabledImages; }
static CMFCToolBarImages* __stdcall GetMenuImages() { return &m_MenuImages; }
static CMFCToolBarImages* __stdcall GetDisabledMenuImages() { return &m_DisabledMenuImages; }
static CMFCToolBarImages* __stdcall GetUserImages() { return m_pUserImages; }
CMFCToolBarImages* GetLockedImages()
{
if (!m_bLocked)
{
ASSERT(FALSE);
return NULL;
}
return &m_ImagesLocked;
}
CMFCToolBarImages* GetLockedColdImages()
{
if (!m_bLocked)
{
ASSERT(FALSE);
return NULL;
}
return &m_ColdImagesLocked;
}
CMFCToolBarImages* GetLockedDisabledImages()
{
if (!m_bLocked)
{
ASSERT(FALSE);
return NULL;
}
return &m_DisabledImagesLocked;
}
CMFCToolBarImages* GetLockedMenuImages()
{
if (!m_bLocked)
{
ASSERT(FALSE);
return NULL;
}
if (m_MenuImagesLocked.GetCount() > 0)
{
return &m_MenuImagesLocked;
}
if (m_ImagesLocked.GetCount() > 0)
{
return &m_ImagesLocked;
}
return NULL;
}
static int __stdcall GetDefaultImage(UINT uiID)
{
int iImage;
if (m_DefaultImages.Lookup(uiID, iImage))
{
return iImage;
}
return -1;
}
int GetImagesOffset() const { return m_iImagesOffset; }
CMFCToolBarButton* GetHighlightedButton() const;
static void __stdcall SetHotTextColor(COLORREF clrText);
static COLORREF __stdcall 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 __stdcall EnableQuickCustomization(BOOL bEnable = TRUE) { m_bAltCustomization = bEnable; }
virtual void EnableDocking(DWORD dwAlignment);
void EnableCustomizeButton(BOOL bEnable, int iCustomizeCmd, const CString& strCustomizeText, BOOL bQuickCustomize = TRUE);
void EnableCustomizeButton(BOOL bEnable, int iCustomizeCmd, UINT uiCustomizeTextResId, BOOL bQuickCustomize = TRUE);
BOOL IsExistCustomizeButton()
{
if(m_pCustomizeBtn == NULL)
{
return FALSE;
}
return TRUE;
}
CMFCCustomizeButton* GetCustomizeButton() { return m_pCustomizeBtn; }
void EnableTextLabels(BOOL bEnable = TRUE);
virtual BOOL AllowChangeTextLabels() const { return TRUE; }
BOOL AreTextLabels() const { return m_bTextLabels; }
virtual BOOL OnBeforeRemoveButton(CMFCToolBarButton* /*pButton*/, DROPEFFECT /*dropEffect*/) { return TRUE; }
void SetMaskMode(BOOL bMasked) { m_bMasked = bMasked; }
void SetPermament(BOOL bPermament = TRUE) { m_bPermament = bPermament; }
BOOL GetIgnoreSetText() const { return m_bIgnoreSetText; }
void SetIgnoreSetText(BOOL bValue) { m_bIgnoreSetText = bValue; }
BOOL GetRouteCommandsViaFrame() { return m_bRouteCommandsViaFrame; }
void SetRouteCommandsViaFrame(BOOL bValue) { m_bRouteCommandsViaFrame = bValue; }
BOOL IsAddRemoveQuickCustomize() { return m_bQuickCustomize; }
BOOL IsSibling() { return m_bHasBrother; }
CMFCToolBar* GetSiblingToolBar() { return m_pBrotherToolBar; }
void SetSiblingToolBar(CMFCToolBar* pBrotherToolbar);
BOOL IsOneRowWithSibling();
void SetOneRowWithSibling();
void SetTwoRowsWithSibling();
BOOL CanHandleSiblings();
void EnableReflections(BOOL bEnable = TRUE) { m_bAllowReflections = bEnable; }
static BOOL __stdcall GetShowTooltips() { return m_bShowTooltips; }
static void __stdcall SetShowTooltips(BOOL bValue) { m_bShowTooltips = bValue; }
HWND GetHwndLastFocus() const { return m_hwndLastFocus; }
AFX_IMPORT_DATA static BOOL m_bDisableLabelsEdit;
public:
// for changing button info
void GetButtonInfo(int nIndex, UINT& nID, UINT& nStyle, int& iImage) const;
void SetButtonInfo(int nIndex, UINT nID, UINT nStyle, int iImage);
BOOL SetButtonText(int nIndex, LPCTSTR lpszText);
CString GetButtonText( int nIndex ) const;
void GetButtonText( int nIndex, CString& rString ) const;
// Save/load toolbar state + buttons:
void Serialize(CArchive& ar);
virtual BOOL LoadState(LPCTSTR lpszProfileName = NULL, int nIndex = -1, UINT uiID = (UINT) -1);
virtual BOOL SaveState(LPCTSTR lpszProfileName = NULL, int nIndex = -1, UINT uiID = (UINT) -1);
virtual BOOL RemoveStateFromRegistry(LPCTSTR lpszProfileName = NULL, int nIndex = -1, UINT uiID = (UINT) -1);
static BOOL __stdcall LoadParameters(LPCTSTR lpszProfileName = NULL);
static BOOL __stdcall SaveParameters(LPCTSTR lpszProfileName = NULL);
static BOOL __stdcall LoadLargeIconsState(LPCTSTR lpszProfileName = NULL);
virtual BOOL CanBeRestored() const;
virtual BOOL CanBeClosed() const { return !m_bPermament; }
virtual BOOL RestoreOriginalState();
virtual void OnReset() {}
static void __stdcall ResetAll();
static void __stdcall RedrawUnderlines();
virtual void AdjustLayout();
virtual int HitTest(CPoint point);
virtual BOOL TranslateChar(UINT nChar);
virtual void OnUpdateCmdUI(CFrameWnd* pTarget, BOOL bDisableIfNoHndler);
virtual BOOL PrevMenu();
virtual BOOL NextMenu();
BOOL ProcessCommand(CMFCToolBarButton* pButton);
CMFCToolBarMenuButton* GetDroppedDownMenu(int* pIndex = NULL) const;
BOOL SetHot(CMFCToolBarButton *pMenuButton);
virtual BOOL OnSetDefaultButtonText(CMFCToolBarButton* pButton);
BOOL IsDragButton(const CMFCToolBarButton* pButton) const { return pButton == m_pDragButton; }
virtual void OnFillBackground(CDC* /*pDC*/) {}
virtual void OnGlobalFontsChanged();
AFX_IMPORT_DATA static BOOL m_bExtCharTranslation;
AFX_IMPORT_DATA static double m_dblLargeImageRatio; // large image stretch ratio (default: * 2)
/// Specifies whether to scale or not toolbar images in high DPI mode.
AFX_IMPORT_DATA static BOOL m_bDontScaleImages; // don't scale shared images in high DPI mode
static void __stdcall CleanUpImages();
void CleanUpLockedImages();
void AdjustSize();
virtual BOOL OnUserToolTip(CMFCToolBarButton* pButton, CString& strTTText) const;
virtual BOOL OnSetAccData(long lVal);
// Implementation
public:
virtual ~CMFCToolBar();
virtual CSize CalcFixedLayout(BOOL bStretch, BOOL bHorz);
virtual CSize CalcSize(BOOL bVertDock);
int WrapToolBar(int nWidth, int nHeight = 32767, CDC* pDC = NULL, int nColumnWidth = -1, int nRowHeight = -1);
virtual void OnChangeHot(int iHot);
virtual CSize StretchPane(int nLength, BOOL bVert);
CMFCToolBarButton* InvalidateButton(int nIndex);
void UpdateButton(int nIndex);
virtual void OnChangeVisualManager();
protected:
virtual CSize CalcLayout(DWORD dwMode, int nLength = -1);
void SizeToolBar(int nLength, BOOL bVert = FALSE);
public:
#ifdef _DEBUG
virtual void AssertValid() const;
virtual void Dump(CDumpContext& dc) const;
#endif
protected:
virtual int InsertButton(CMFCToolBarButton* pButton, int iInsertAt = -1);
virtual BOOL DrawButton(CDC* pDC, CMFCToolBarButton* pButton, CMFCToolBarImages* pImages, BOOL bHighlighted, BOOL bDrawDisabledImages);
virtual void DrawDragCursor(CDC* pDC);
CMFCToolBarImages* GetImageList(CMFCToolBarImages& images, CMFCToolBarImages& imagesLocked, CMFCToolBarImages& largeImages, CMFCToolBarImages& largeImagesLocked) const;
void RebuildAccelerationKeys();
virtual CWnd* GetCommandTarget() const
{
// determine target of command update
CFrameWnd* pTarget = (CFrameWnd*) GetOwner();
if (pTarget == NULL || (m_bRouteCommandsViaFrame && !pTarget->IsFrameWnd()))
{
pTarget = AFXGetParentFrame(this);
}
return pTarget;
}
void UpdateTooltips();
virtual void OnAfterFloat();
virtual void OnAfterDock(CBasePane* /*pBar*/, LPCRECT /*lpRect*/, AFX_DOCK_METHOD /*dockMethod*/);
virtual void OnBeforeChangeParent(CWnd* pWndNewParent, BOOL bDelay = FALSE);
virtual void AccNotifyObjectFocusEvent(int iButton);
virtual int AccGetButtonsCount();
CMFCToolBarButton* AccGetButtonByChildId(long lVal);
int AccGetChildIdByButtonIndex(int nButtonIndex);
virtual HRESULT get_accChildCount(long *pcountChildren);
virtual HRESULT get_accChild(VARIANT varChild, IDispatch **ppdispChild);
virtual HRESULT accHitTest(long xLeft, long yTop, VARIANT *pvarChild);
virtual HRESULT accNavigate(long navDir, VARIANT varStart, VARIANT *pvarEndUpAt);
virtual HRESULT accDoDefaultAction(VARIANT varChild);
protected:
friend class CWinAppEx;
AFX_IMPORT_DATA static CMFCToolBar* m_pSelToolbar; // "Selected" toolbar in the customization mode
AFX_IMPORT_DATA static CMFCToolBarImages m_Images; // Shared toolbar images
AFX_IMPORT_DATA static CMFCToolBarImages m_ColdImages; // Shared toolbar "cold" images
AFX_IMPORT_DATA static CMFCToolBarImages m_DisabledImages; // Shared disabled images
AFX_IMPORT_DATA static CMFCToolBarImages m_LargeImages; // Shared toolbar large "hot" images
AFX_IMPORT_DATA static CMFCToolBarImages m_LargeColdImages; // Shared toolbar large "cold" images
AFX_IMPORT_DATA static CMFCToolBarImages m_LargeDisabledImages; // Shared disabled large images
AFX_IMPORT_DATA static CMFCToolBarImages m_MenuImages;
AFX_IMPORT_DATA static CMFCToolBarImages m_DisabledMenuImages;
AFX_IMPORT_DATA static BOOL m_bAutoGrayInactiveImages;
AFX_IMPORT_DATA static int m_nGrayImagePercentage;
AFX_IMPORT_DATA static CMFCToolBarImages* m_pUserImages; // Shared user-defined images
CMFCToolBarImages m_ImagesLocked; // "Locked" toolbar images
CMFCToolBarImages m_ColdImagesLocked; // "Locked" toolbar "cold" images
CMFCToolBarImages m_DisabledImagesLocked; // "Locked" toolbar disabled images
CMFCToolBarImages m_LargeImagesLocked; // "Locked" toolbar large images
CMFCToolBarImages m_LargeColdImagesLocked; // "Locked" toolbar large "cold" images
CMFCToolBarImages m_LargeDisabledImagesLocked; // "Locked" toolbar large disabled images
CMFCToolBarImages m_MenuImagesLocked; // "Locked" toolbar menu images
CMFCToolBarImages m_DisabledMenuImagesLocked; // "Locked" toolbar menu disabled images
BOOL m_bLocked;
BOOL m_bLargeIconsAreEnbaled;
BOOL m_bMasked;
BOOL m_bPermament; // Can't be closed
BOOL m_bTextLabels; // Text labels below the image are available
BOOL m_bDrawTextLabels;
BOOL m_bResourceWasChanged; // Resource was changed since last session
BOOL m_bLeaveFocus; // Don't remove selection in the focused bars.
BOOL m_bFloating;
BOOL m_bNoDropTarget;
BOOL m_bIsDragCopy;
BOOL m_bStretchButton;
BOOL m_bTracked;
BOOL m_bMenuMode;
BOOL m_bDisableControlsIfNoHandler;
BOOL m_bRouteCommandsViaFrame;
BOOL m_bDisableCustomize;
BOOL m_bShowHotBorder;
BOOL m_bGrayDisabledButtons;
BOOL m_bIgnoreSetText;
BOOL m_bQuickCustomize;
BOOL m_bHasBrother;
BOOL m_bElderBrother;
BOOL m_bAllowReflections;
BOOL m_bRoundShape;
BOOL m_bInUpdateShadow;
CMFCControlBarImpl m_Impl;
int m_nMaxBtnHeight; // Actual only if m_bTextLabels is TRUE
int m_iButtonCapture; // index of button with capture (-1 => none)
int m_iHighlighted; // highlighted button index
int m_iSelected; // selected button index
int m_iHot;
int m_nTooltipsCount;
int m_iDragIndex;
int m_iImagesOffset;
int m_nMaxLen;
int m_iAccHotItem;
AFX_IMPORT_DATA static CMap m_DefaultImages;
AFX_IMPORT_DATA static CSize m_sizeButton; // original size of button
AFX_IMPORT_DATA static CSize m_sizeImage; // original size of glyph
AFX_IMPORT_DATA static CSize m_sizeMenuButton; // size of button on the menu
AFX_IMPORT_DATA static CSize m_sizeMenuImage; // size of image on the menu
AFX_IMPORT_DATA static CSize m_sizeCurButton; // size of button
AFX_IMPORT_DATA static CSize m_sizeCurImage; // size of glyph
CSize m_sizeButtonLocked; // original size of button of the locked toolbars
CSize m_sizeImageLocked; // original size of glyph of the locked toolbars
CSize m_sizeCurButtonLocked; // size of button
CSize m_sizeCurImageLocked; // size of glyph
BOOL m_bDontScaleLocked; // don't scale locked images in high DPI mode
CSize m_sizeLast;
CObList m_Buttons;
CObList m_OrigButtons; // Original (not customized) items
CObList m_OrigResetButtons; // Original (not customized) items after reset
CMFCToolBarDropTarget m_DropTarget;
AFX_IMPORT_DATA static CMFCToolBarDropSource m_DropSource;
CRect m_rectDrag;
CRect m_rectTrack;
CPen m_penDrag;
CPoint m_ptStartDrag;
CPoint m_ptLastMouse;
CWnd* m_pWndLastCapture;
CToolTipCtrl* m_pToolTip;
CMFCToolBarButton* m_pDragButton;
CMFCToolBar* m_pBrotherToolBar;
CMFCCustomizeButton* m_pCustomizeBtn;
UINT m_uiOriginalResID; // Toolbar resource ID
HWND m_hwndLastFocus;
AFX_IMPORT_DATA static COLORREF m_clrTextHot;
AFX_IMPORT_DATA static HHOOK m_hookMouseHelp; // Mouse hook for the help mode
AFX_IMPORT_DATA static CMFCToolBar* m_pLastHookedToolbar;
CMap m_AccelKeys; // Keyboard acceleration keys
AFX_IMPORT_DATA static BOOL m_bCustomizeMode;
AFX_IMPORT_DATA static BOOL m_bAltCustomizeMode;
AFX_IMPORT_DATA static BOOL m_bShowTooltips;
AFX_IMPORT_DATA static BOOL m_bShowShortcutKeys;
AFX_IMPORT_DATA static BOOL m_bLargeIcons;
AFX_IMPORT_DATA static BOOL m_bAltCustomization;
AFX_IMPORT_DATA static CList m_lstUnpermittedCommands;
AFX_IMPORT_DATA static CList m_lstBasicCommands;
AFX_IMPORT_DATA static CMFCCmdUsageCount m_UsageCount;
virtual BOOL OnDrop(COleDataObject* pDataObject, DROPEFFECT dropEffect, CPoint point);
virtual DROPEFFECT OnDragEnter(COleDataObject* pDataObject, DWORD dwKeyState, CPoint point);
virtual void OnDragLeave();
virtual DROPEFFECT OnDragOver(COleDataObject* pDataObject, DWORD dwKeyState, CPoint point);
virtual void DoPaint(CDC* pDC);
virtual INT_PTR OnToolHitTest(CPoint point, TOOLINFO* pTI) const;
virtual BOOL PreTranslateMessage(MSG* pMsg);
virtual BOOL OnCommand(WPARAM wParam, LPARAM lParam);
virtual BOOL NotifyControlCommand(CMFCToolBarButton* pButton, BOOL bAccelerator, int nNotifyCode, WPARAM wParam, LPARAM lParam);
virtual int FindDropIndex(const CPoint point, CRect& rectDrag) const;
virtual void AdjustLocations();
virtual BOOL OnSendCommand(const CMFCToolBarButton* /*pButton*/) { return FALSE; }
virtual BOOL AllowSelectDisabled() const { return FALSE; }
virtual BOOL AllowShowOnList() const { return TRUE; }
virtual BOOL AlwaysSaveSelection() const { return FALSE; }
virtual void DrawSeparator(CDC* pDC, const CRect& rect, BOOL bHorz);
virtual CMFCToolBarButton* CreateDroppedButton(COleDataObject* pDataObject);
virtual BOOL OnKey(UINT /*nChar*/) { return FALSE; }
virtual void OnCustomizeMode(BOOL bSet);
virtual BOOL EnableContextMenuItems(CMFCToolBarButton* pButton, CMenu* pPopup);
virtual BOOL IsPureMenuButton(CMFCToolBarButton* /*pButton*/) const { return m_bMenuMode; }
virtual void OnCalcSeparatorRect(CMFCToolBarButton* pButton, CRect& rectSeparator, BOOL bHorz);
virtual void AddRemoveSeparator(const CMFCToolBarButton* pButton, const CPoint& ptStart, const CPoint& ptDrop);
virtual void ShowCommandMessageString(UINT uiCmdId);
static LRESULT CALLBACK ToolBarMouseHookProc(int nCode, WPARAM wParam, LPARAM lParam);
BOOL DropDownMenu(CMFCToolBarButton* pButton);
virtual int CalcMaxButtonHeight();
virtual BOOL AllowAltCustomization() const { return TRUE; }
virtual void OnAfterButtonDelete();
void SetRoundedRgn();
void RedrawCustomizeButton();
void UpdateImagesColor();
// SmartUpdate methods:
virtual void SaveOriginalState(CSettingsStore& reg);
virtual BOOL LoadLastOriginalState(CSettingsStore& reg);
virtual BOOL SmartUpdate(const CObList& lstPrevButtons);
void SaveResetOriginalState(CSettingsStore& reg);
BOOL LoadResetOriginalState(CSettingsStore& reg);
BOOL RemoveResetStateButton(UINT uiCmdId);
int InsertResetStateButton(const CMFCToolBarButton& button, int iInsertAt);
afx_msg void OnMouseMove(UINT nFlags, CPoint point);
afx_msg void OnCancelMode();
afx_msg void OnSysColorChange();
afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
afx_msg void OnDestroy();
afx_msg void OnLButtonDown(UINT nFlags, CPoint point);
afx_msg void OnToolbarAppearance();
afx_msg void OnToolbarDelete();
afx_msg void OnToolbarImage();
afx_msg void OnToolbarImageAndText();
afx_msg void OnToolbarStartGroup();
afx_msg void OnToolbarText();
afx_msg void OnLButtonUp(UINT nFlags, CPoint point);
afx_msg void OnWindowPosChanged(WINDOWPOS FAR* lpwndpos);
afx_msg HBRUSH OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor);
afx_msg BOOL OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message);
afx_msg void OnSize(UINT nType, int cx, int cy);
afx_msg void OnLButtonDblClk(UINT nFlags, CPoint point);
afx_msg void OnToolbarReset();
afx_msg void OnNcCalcSize(BOOL bCalcValidRects, NCCALCSIZE_PARAMS FAR* lpncsp);
afx_msg void OnNcPaint();
afx_msg void OnCopyImage();
afx_msg void OnSetFocus(CWnd* pOldWnd);
afx_msg void OnToolbarNewMenu();
afx_msg void OnWindowPosChanging(WINDOWPOS FAR* lpwndpos);
afx_msg BOOL OnEraseBkgnd(CDC* pDC);
afx_msg void OnKillFocus(CWnd* pNewWnd);
afx_msg void OnSettingChange(UINT uFlags, LPCTSTR lpszSection);
afx_msg void OnShowWindow(BOOL bShow, UINT nStatus);
afx_msg void OnRButtonDown(UINT nFlags, CPoint point);
afx_msg void OnContextMenu(CWnd*, CPoint point);
afx_msg void OnMouseLeave();
afx_msg LRESULT OnHelpHitTest(WPARAM,LPARAM);
afx_msg LRESULT OnGetButtonCount(WPARAM,LPARAM);
afx_msg LRESULT OnGetItemRect(WPARAM,LPARAM);
afx_msg LRESULT OnGetButton(WPARAM,LPARAM);
afx_msg LRESULT OnGetButtonText(WPARAM,LPARAM);
afx_msg BOOL OnNeedTipText(UINT id, NMHDR* pNMH, LRESULT* pResult);
afx_msg LRESULT OnPromptReset(WPARAM, LPARAM);
afx_msg LRESULT OnNcHitTest(CPoint point);
afx_msg LRESULT OnUpdateToolTips(WPARAM, LPARAM);
DECLARE_MESSAGE_MAP()
};
#ifdef _AFX_MINREBUILD
#pragma component(minrebuild, on)
#endif
#ifdef _AFX_PACKING
#pragma pack(pop)
#endif
// _ATLMFC_DISABLED_WARNINGS
#pragma warning(pop)