⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 bcgpworkspace.cpp

📁 远程网络监视程序的源码
💻 CPP
📖 第 1 页 / 共 3 页
字号:
//*******************************************************************************
// 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 + -