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

📄 resorgaddinapp.cpp

📁 ResOrg 图形化管理Vc项目的资源ID的工具的源代码。 ResOrg - Manage and Renumber Resource Symbol IDs Introduction The
💻 CPP
📖 第 1 页 / 共 2 页
字号:
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif


CComModule _Module;


BEGIN_OBJECT_MAP(ObjectMap)
	OBJECT_ENTRY(CLSID_DSAddIn, CDSAddIn)
END_OBJECT_MAP()


CResOrgAddInApp* GetApp(void)
{
	return (CResOrgAddInApp*)AfxGetApp();
}


/////////////////////////////////////////////////////////////////////////////
// CResOrgAddInApp

BEGIN_MESSAGE_MAP(CResOrgAddInApp, CResOrgAddInApp_BASE)

	ON_COMMAND(				ID_FILE_NEW,			OnFileNew)
	ON_COMMAND(				ID_APP_ABOUT,			OnCmdAbout)
	ON_COMMAND(				ID_FILE_OPEN,			CResOrgAddInApp_BASE::OnFileOpen)

END_MESSAGE_MAP()


/////////////////////////////////////////////////////////////////////////////
// The one and only CResOrgAddInApp object

CResOrgAddInApp theApp;


/////////////////////////////////////////////////////////////////////////////
// CResOrgAddInApp construction

CResOrgAddInApp::CResOrgAddInApp(void)
{
	m_pDocManager				= NULL;

	m_pMainDocTemplate			= NULL;

#ifdef _DEBUG
	_crtBreakAlloc = -1;
#endif
}


CResOrgAddInApp::~CResOrgAddInApp(void)
{
}


/////////////////////////////////////////////////////////////////////////////
// CResOrgAddInApp virtual overrides

BOOL CResOrgAddInApp::InitInstance(void)
{
	_Module.Init(ObjectMap, m_hInstance);

	SetRegistryKey(_T("Riverblade"));

	LoadStdProfileSettings(9);  // Load standard INI file options (including MRU)

	// Create CDynLinkLibrary objects for each of the
	// extension DLLs we use.
	//
	// This is only necessary because DevStudio add-ins are usually
	// implemented as Regular DLLs, rather than extension DLLs.
	//
	// Without this code, the resources in the extension DLLs
	// would be unavailable (much badness, in fact)...
	InitCJLibrary();
	InitNGLibrary();

	#if _MSC_VER < 1300		// BXFileDialog doesn't work with VC7 yet
		InitBXFileDialogDll();
	#endif

	InitResOrgCore();

	SetHelpFileName( _T("ResOrg.hlp") );

	return CResOrgAddInApp_BASE::InitInstance();
}


void CResOrgAddInApp::OnConnection(void)
{
	#if _MSC_VER < 1300		// BXFileDialog doesn't work with VC7 yet
		m_pDocManager = new BXFileDialogDocManager;
	#endif

	// Register the application's document templates.  Document templates
	// serve as the connection between documents, frame windows and views.
	m_pMainDocTemplate = new CMultiDocTemplate(
		IDR_SYMBOL_FILE_TYPE,
		RUNTIME_CLASS(CResOrgSymbolsDoc),
		RUNTIME_CLASS(CResOrgMDIChildSplitWnd),			// Custom MDI child frame
		RUNTIME_CLASS(CResOrgSymbolsListView) );
	
	m_pMainDocTemplate->m_bAutoDelete = TRUE;

	AddDocTemplate(m_pMainDocTemplate);

	m_pMultiSymbolFileTemplate = new CMultiDocTemplate(
		IDR_SYMBOL_FILE_TYPE,
		RUNTIME_CLASS(CResOrgSymbolsDocMultiFile),
		RUNTIME_CLASS(CResOrgMDIChildSplitWnd),		// custom MDI child frame
		RUNTIME_CLASS(CResOrgSymbolsListView));

	m_pHtmlDocTemplate = new CMultiDocTemplate(
		IDR_HTML_TYPE,
		RUNTIME_CLASS(CResOrgHtmlDoc),
		RUNTIME_CLASS(CResOrgMDIChildWnd),
		RUNTIME_CLASS(CResOrgHtmlView) );

	// Create main MDI Frame window
	CMainFrame* pMainFrame = new CMainFrame;
	ASSERT_VALID(pMainFrame);
	if (NULL != pMainFrame)
	{
		if (!pMainFrame->LoadFrame(IDR_MAINFRAME))
		{
			return;
		}
		AfxGetApp()->m_pMainWnd = pMainFrame;

		// Initialize the cool menus...
		UINT nToolBars[] =
		{
			IDR_MAINFRAME
		}; // ...can be many toolbars...
			
		pMainFrame->InitializeMenu(	m_pMainDocTemplate,
									IDR_SYMBOL_FILE_TYPE,
									nToolBars,
									1,		
									IDR_MAINFRAME);

		pMainFrame->InitializeMenu(	m_pMultiSymbolFileTemplate,
									IDR_SYMBOL_FILE_TYPE,
									nToolBars,
									1,			
									IDR_MAINFRAME);
		
		pMainFrame->InitializeMenu(	m_pHtmlDocTemplate,
									IDR_HTML_TYPE,
									nToolBars,
									1,			
									IDR_MAINFRAME);

		// Enable drag/drop open
		pMainFrame->DragAcceptFiles();

		// Read options from the registry, and kick off the
		// version check (if appropriate)
		Options.Initialise();

		// Use Office XP style menus if selected
		CCJMenu::SetMenuDrawMode(Options.UseXpStyleMenus() ? CCJMenu_DRAWMODE_XP : CCJMenu_DRAWMODE_ORIGINAL);

		if (Options.IsMailingListPromptEnabled() )
		{
			Options.EnableMailingListPrompt(FALSE);		// Only ask once

			if (IDYES == DoMailingListQuery())
			{
				::ShellExecute(	::GetDesktopWindow(),
								_T("open"),
								Options.GetMailingListURL(),
								NULL,
								NULL,
								SW_SHOWNORMAL);
			}
		}
		Options.DoVersionCheck();
	}
}


void CResOrgAddInApp::OnDisconnection(void)
{
	if (NULL != m_pMainWnd)
	{
		if (::IsWindow(m_pMainWnd->m_hWnd))
		{
			m_pMainWnd->DestroyWindow();
		}
		delete m_pMainWnd;
	}
	if (NULL != m_pDocManager)
	{
		// Trick CWinApp into thinking we're an application (exe) to
		// clear up static CDocManager objects:
		//
		//		CDocManager::pStaticList
		//		CDocManager::pStaticDocManager
		//
		// Look at the CWinApp destructor in appcore.cpp for more details.
		//
		// Thanks to Gavin Jerman (gavin.jerman@zurich.co.uk) for this fix
 		AfxGetModuleState()->m_bDLL = FALSE;

		delete m_pDocManager;
		m_pDocManager = NULL;
	}
}


BOOL CResOrgAddInApp::OnIdle(LONG lCount)
{
	return CResOrgAddInApp_BASE::OnIdle(lCount);
}


int CResOrgAddInApp::ExitInstance(void)
{
	// If a version check is running, Wait until it finishes
	// before exiting (by now the main window has gone)
	Options.OnExit();

	_Module.Term();

	return CResOrgAddInApp_BASE::ExitInstance();
}


/////////////////////////////////////////////////////////////////////////////
// CResOrgAddInApp implementation
//
// (none)



/////////////////////////////////////////////////////////////////////////////
// CResOrgAddInApp message handlers

void CResOrgAddInApp::OnFileNew(void)
{
	CResOrgAddInApp_BASE::OnFileNew();
}


// App command to run the dialog
void CResOrgAddInApp::OnCmdAbout(void)
{
	CResOrgAboutBox aboutDlg;

	aboutDlg.SetModuleState( ::AfxGetStaticModuleState() );

	aboutDlg.DoModal();
}


/////////////////////////////////////////////////////////////////////////////
// CResOrgAddInApp operations

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -