📄 bcgpworkspace.cpp
字号:
//*******************************************************************************
// 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.
//*******************************************************************************
#include "stdafx.h"
#include "BCGGlobals.h"
#include "BCGCBPro.h"
#include "BCGPToolBar.h"
#include "BCGPWorkspace.h"
#include "BCGPFrameImpl.h"
#include "BCGPMDIFrameWnd.h"
#include "BCGPFrameWnd.h"
#include "BCGPOleIPFrameWnd.h"
#include "BCGPMouseManager.h"
#include "BCGPContextMenuManager.h"
#include "BCGPKeyboardManager.h"
#include "BCGPUserToolsManager.h"
#include "BCGPTearOffManager.h"
#include "BCGPSkinManager.h"
#include "BCGPShellManager.h"
#include "BCGPRegistry.h"
#include "RegPath.h"
#include "RebarState.h"
#include "BCGCBProVer.h" // Library version info.
#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif
CBCGPWorkspace* g_pWorkspace = NULL;
BOOL g_bWorkspaceAutocreated = FALSE;
CBCGPWorkspace* GetWorkspace()
{
//---------------------------------------------------------------------
// You must either:
// ----------------
// a) construct a CBCGPWorkspace object
// b) mix a CBCGPWorkspace class somewhere in (e.g. your CWinApp object)
// c) call CBCGPWorkspace::UseWorkspaceManager() to automatically
// initialize an object for you
//---------------------------------------------------------------------
ASSERT (g_pWorkspace != NULL);
return g_pWorkspace;
}
//-----------------------
// clean up if necessary:
//-----------------------
struct _WORKSPACE_TERM
{
~_WORKSPACE_TERM()
{
if (g_pWorkspace != NULL && g_bWorkspaceAutocreated)
{
delete g_pWorkspace;
g_pWorkspace = NULL;
g_bWorkspaceAutocreated = FALSE;
}
}
};
static const _WORKSPACE_TERM workspaceTerm;
//*************************************************************************************
static const CString strRegEntryNameControlBars = _T("\\ControlBars");
static const CString strWindowPlacementRegSection = _T("WindowPlacement");
static const CString strRectMainKey = _T("MainWindowRect");
static const CString strFlagsKey = _T("Flags");
static const CString strShowCmdKey = _T("ShowCmd");
static const CString strRegEntryNameSizingBars = _T("\\SizingBars");
static const CString strRegEntryVersion = _T("BCGControlBarVersion");
static const CString strVersionMajorKey = _T("Major");
static const CString strVersionMinorKey = _T("Minor");
extern CObList gAllToolbars;
//*************************************************************************************
BOOL CBCGPWorkspace::UseWorkspaceManager(LPCTSTR lpszSectionName /*=NULL*/)
{
if(g_pWorkspace != NULL)
{
return FALSE; // already exists
}
g_pWorkspace = new CBCGPWorkspace;
g_bWorkspaceAutocreated = TRUE; // Cleanup
if(lpszSectionName != NULL)
{
g_pWorkspace->m_strRegSection = lpszSectionName;
}
return TRUE;
}
//*************************************************************************************
LPCTSTR CBCGPWorkspace::SetRegistryBase(LPCTSTR lpszSectionName /*= NULL*/)
{
m_strRegSection = (lpszSectionName != NULL) ?
lpszSectionName :
lpszSectionName;
return m_strRegSection;
}
//*************************************************************************************
CBCGPWorkspace::CBCGPWorkspace (BOOL bResourceSmartUpdate /*= FALSE*/) :
m_bResourceSmartUpdate (bResourceSmartUpdate)
{
// ONLY ONE ALLOWED
ASSERT(g_pWorkspace == NULL);
g_pWorkspace = this;
m_bKeyboardManagerAutocreated = FALSE;
m_bContextMenuManagerAutocreated = FALSE;
m_bMouseManagerAutocreated = FALSE;
m_bUserToolsManagerAutoCreated = FALSE;
m_bTearOffManagerAutoCreated = FALSE;
m_bSkinManagerAutocreated = FALSE;
m_bShellManagerAutocreated = FALSE;
const CString strRegEntryNameWorkspace = _T("BCGWorkspace");
m_strRegSection = strRegEntryNameWorkspace;
m_iSavedVersionMajor = -1;
m_iSavedVersionMinor = -1;
m_bForceDockStateLoad = FALSE;
m_bLoadSaveFrameBarsOnly = FALSE;
m_bSaveState = TRUE;
m_bForceImageReset = FALSE;
}
//*************************************************************************************
CBCGPWorkspace::~CBCGPWorkspace()
{
// NO OTHER !!
ASSERT(g_pWorkspace == this);
g_pWorkspace = NULL;
// Delete autocreated managers
if(m_bKeyboardManagerAutocreated && g_pKeyboardManager != NULL)
{
delete g_pKeyboardManager;
g_pKeyboardManager = NULL;
}
if (m_bContextMenuManagerAutocreated && g_pContextMenuManager != NULL)
{
delete g_pContextMenuManager;
g_pContextMenuManager = NULL;
}
if (m_bMouseManagerAutocreated && g_pMouseManager != NULL)
{
delete g_pMouseManager;
g_pMouseManager = NULL;
}
if (m_bUserToolsManagerAutoCreated && g_pUserToolsManager != NULL)
{
delete g_pUserToolsManager;
g_pUserToolsManager = NULL;
}
if (m_bTearOffManagerAutoCreated && g_pTearOffMenuManager != NULL)
{
delete g_pTearOffMenuManager;
g_pTearOffMenuManager = NULL;
}
#if defined _AFXDLL && !defined _BCGCBPRO_STATIC_ // Skins manager can not be used in the static version
if (m_bSkinManagerAutocreated && g_pSkinManager != NULL)
{
delete g_pSkinManager;
g_pSkinManager = NULL;
}
#endif
if (m_bShellManagerAutocreated && g_pShellManager != NULL)
{
delete g_pShellManager;
g_pShellManager = NULL;
}
}
//*************************************************************************************
BOOL CBCGPWorkspace::InitShellManager()
{
if (g_pShellManager != NULL)
{
ASSERT (FALSE);
return FALSE;
}
g_pShellManager = new CBCGPShellManager;
m_bShellManagerAutocreated = TRUE;
return TRUE;
}
//*************************************************************************************
BOOL CBCGPWorkspace::InitMouseManager()
{
if (g_pMouseManager != NULL)
{
ASSERT (FALSE);
return FALSE;
}
g_pMouseManager = new CBCGPMouseManager;
m_bMouseManagerAutocreated = TRUE;
return TRUE;
}
//*************************************************************************************
BOOL CBCGPWorkspace::InitContextMenuManager()
{
if (g_pContextMenuManager != NULL)
{
ASSERT (FALSE);
return FALSE;
}
g_pContextMenuManager = new CBCGPContextMenuManager;
m_bContextMenuManagerAutocreated = TRUE;
return TRUE;
}
//*************************************************************************************
BOOL CBCGPWorkspace::InitKeyboardManager()
{
if (g_pKeyboardManager != NULL)
{
ASSERT (FALSE);
return FALSE;
}
g_pKeyboardManager = new CBCGPKeyboardManager;
m_bKeyboardManagerAutocreated = TRUE;
return TRUE;
}
#if defined _AFXDLL && !defined _BCGCBPRO_STATIC_ // Skins manager can not be used in the static version
BOOL CBCGPWorkspace::InitSkinManager(LPCTSTR lpszSkinsDirectory/* = BCG_DEFAULT_SKINS_DIR*/)
{
if (g_pSkinManager != NULL)
{
ASSERT (FALSE);
return FALSE;
}
g_pSkinManager = new CBCGPSkinManager (lpszSkinsDirectory);
m_bSkinManagerAutocreated = TRUE;
return TRUE;
}
#endif
BOOL CBCGPWorkspace::EnableUserTools (const UINT uiCmdToolsDummy,
const UINT uiCmdFirst, const UINT uiCmdLast,
CRuntimeClass* pToolRTC,
UINT uArgMenuID, UINT uInitDirMenuID)
{
if (g_pUserToolsManager != NULL)
{
ASSERT (FALSE);
return FALSE;
}
g_pUserToolsManager = new
CBCGPUserToolsManager ( uiCmdToolsDummy, uiCmdFirst, uiCmdLast, pToolRTC,
uArgMenuID, uInitDirMenuID);
m_bUserToolsManagerAutoCreated = TRUE;
return TRUE;
}
//*************************************************************************************
BOOL CBCGPWorkspace::EnableTearOffMenus (LPCTSTR lpszRegEntry,
const UINT uiCmdFirst, const UINT uiCmdLast)
{
if (g_pTearOffMenuManager != NULL)
{
ASSERT (FALSE);
return FALSE;
}
g_pTearOffMenuManager = new CBCGPTearOffManager;
m_bTearOffManagerAutoCreated = TRUE;
return g_pTearOffMenuManager->Initialize (lpszRegEntry, uiCmdFirst, uiCmdLast);
}
//**************************************************************************************
CBCGPMouseManager* CBCGPWorkspace::GetMouseManager()
{
if (g_pMouseManager == NULL)
{
InitMouseManager ();
}
ASSERT_VALID (g_pMouseManager);
return g_pMouseManager;
}
//*************************************************************************************
CBCGPShellManager* CBCGPWorkspace::GetShellManager()
{
if (g_pShellManager == NULL)
{
InitShellManager ();
}
ASSERT_VALID (g_pShellManager);
return g_pShellManager;
}
//**************************************************************************************
CBCGPContextMenuManager* CBCGPWorkspace::GetContextMenuManager()
{
if (g_pContextMenuManager == NULL)
{
InitContextMenuManager();
}
ASSERT_VALID (g_pContextMenuManager);
return g_pContextMenuManager;
}
//*************************************************************************************
CBCGPKeyboardManager* CBCGPWorkspace::GetKeyboardManager()
{
if (g_pKeyboardManager == NULL)
{
InitKeyboardManager ();
}
ASSERT_VALID (g_pKeyboardManager);
return g_pKeyboardManager;
}
#if defined _AFXDLL && !defined _BCGCBPRO_STATIC_ // Skins manager can not be used in the static version
CBCGPSkinManager* CBCGPWorkspace::GetSkinManager()
{
if (g_pSkinManager == NULL)
{
InitSkinManager ();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -