📄 resorgaddinapp.cpp
字号:
#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 + -