Exemple #1
0
// This hack is necessary because the menu ID is a member of the class.
// MFC message maps need the IDs to be global.
BOOL CDocTemplateEx::OnCmdMsg(UINT nID, int nCode, void* pExtra, AFX_CMDHANDLERINFO* pHandlerInfo)
{
	// determine the message number and code (packed into nCode)
	UINT nMsg = 0;
	int nCod = nCode;

	if (nCod != CN_UPDATE_COMMAND_UI)
	{
		nMsg = HIWORD(nCod);
		nCod = LOWORD(nCod);
	}

	// for backward compatibility HIWORD(nCode)==0 is WM_COMMAND
	if (nMsg == 0)
		nMsg = WM_COMMAND;

	if ((nCod==CN_UPDATE_COMMAND_UI) && (nID>=m_nMenuId) && (nID<=m_nMenuId+MRU_RANGE))	
	{
		BOOL bResult = TRUE; // default is ok
		ASSERT(pExtra != NULL);
		CCmdUI* pCmdUI = (CCmdUI*)pExtra;
		ASSERT(!pCmdUI->m_bContinueRouting);    // idle - not set
		OnUpdateRecentFileMenu(pCmdUI);
		bResult = !pCmdUI->m_bContinueRouting;
		pCmdUI->m_bContinueRouting = FALSE;     // go back to idle
		return bResult;
	}

	if ((nMsg==WM_COMMAND) && (nCod==CN_COMMAND) && (nID>=m_nMenuId) && (nID<=m_nMenuId+MRU_RANGE))	
	{

#ifdef _DEBUG
			if (afxTraceFlags & traceCmdRouting)
			{
				TRACE2("SENDING command id 0x%04X to %hs target.\n", nID,
					GetRuntimeClass()->m_lpszClassName);
			}
#endif //_DEBUG

		return OnOpenRecentFile(nID);
	}

	return CMultiDocTemplate::OnCmdMsg(nID, nCode, pExtra, pHandlerInfo);
}
Exemple #2
0
BOOL CBibedtApp::InitInstance()
{

	// Standardinitialisierung
	// Wenn Sie diese Funktionen nicht nutzen und die Größe Ihrer fertigen 
	//  ausführbaren Datei reduzieren wollen, sollten Sie die nachfolgenden
	//  spezifischen Initialisierungsroutinen, die Sie nicht benötigen, entfernen.
   
	InitCommonControls();
#ifdef _AFXDLL
	Enable3dControls();			// Diese Funktion bei Verwendung von MFC in gemeinsam genutzten DLLs aufrufen
#else
	Enable3dControlsStatic();	// Diese Funktion bei statischen MFC-Anbindungen aufrufen
#endif

	// Ändern des Registrierungsschlüssels, unter dem unsere Einstellungen gespeichert sind.
	SetRegistryKey(AfxLoadString(IDS_STRING_REGKEY));

	LoadStdProfileSettings();  // Standard INI-Dateioptionen laden (einschließlich MRU)
	m_Language.LoadLanguages();
	m_Options = new COptions();
	m_Options->Load();
	m_Coding = new CCodingTeX();
	m_Coding->m_Enabled = m_Options->m_TranslateASCII;
	m_Coding->m_Filename = m_Options->m_EncodingTeX;
	m_Coding->m_Res = _T("TEX");
	m_Coding->Load();
	m_BibDef = new CBibDef();

	CScintillaWnd::LoadScintillaDll();

	m_pDocManager = new CDocManagerEx;
	// Dokumentvorlagen der Anwendung registrieren. Dokumentvorlagen
	//  dienen als Verbindung zwischen Dokumenten, Rahmenfenstern und Ansichten.

	CSingleDocTemplate* pDocTemplate;
	pDocTemplate = new CSingleDocTemplate(
		IDR_MAINFRAME,
		RUNTIME_CLASS(CBibedtDoc),
		RUNTIME_CLASS(CMainFrame),       // Haupt-SDI-Rahmenfenster
		RUNTIME_CLASS(CBibedtView));
	
	AddDocTemplate(pDocTemplate);

	// Befehlszeile parsen, um zu prüfen auf Standard-Umgebungsbefehle DDE, Datei offen
	CCommandLineInfo cmdInfo;
	ParseCommandLine(cmdInfo);

	// Verteilung der in der Befehlszeile angegebenen Befehle
	if (!ProcessShellCommand(cmdInfo))
		return FALSE;

	// Register Bib Clipboard format
	m_BibClipbrdFormat = RegisterClipboardFormat(CF_BIB);
	// Register RTF Clipboard format
	m_RtfClipbrdFormat = RegisterClipboardFormat(CF_RTF);
	m_HtmlClipbrdFormat = RegisterClipboardFormat(CF_HTML);

	// Shell
	EnableShellOpen();
#ifndef _DEBUG
	RegisterShellFileTypes(TRUE);
#endif
	m_pMainWnd->DragAcceptFiles();
	
	// Das einzige Fenster ist initialisiert und kann jetzt angezeigt und aktualisiert werden.
	m_pMainWnd->ShowWindow(m_Options->m_WindowPlacement.showCmd);
	m_pMainWnd->UpdateWindow();

	if (m_Options->m_OpenLastFile && cmdInfo.m_nShellCommand == CCommandLineInfo::FileNew && (UINT)m_pRecentFileList->GetSize() > 0) {
		// Open last file at start
		CString fn = m_pRecentFileList->m_arrNames[0];
		CFileFind ff;
		if (ff.FindFile(fn)) {
			OnOpenRecentFile(ID_FILE_MRU_FILE1);
		} else {
			// Does not exist
			//m_pRecentFileList->Remove(0);
		}
		ff.Close();
	}
	return TRUE;
}