📄 cedtapp.cpp
字号:
// cedt.cpp : Defines the class behaviors for the application.
//
#include "stdafx.h"
#include "cedtHeader.h"
#include "registry.h"
#include "HtmlHelp.h"
#include <afxmt.h>
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// Shared data segment
#pragma data_seg("Shared")
DWORD nFirstThreadID = 0;
HWND hFirstWindow = NULL;
#pragma data_seg()
#pragma comment(linker, "/section:Shared,rws")
/////////////////////////////////////////////////////////////////////////////
// CCedtApp static member variables
CString CCedtApp::m_szInstallDirectory;
CString CCedtApp::m_szLoadingDirectory;
CString CCedtApp::m_szInitialWorkingDirectory;
CString CCedtApp::m_szRemoteBackupDirectory;
BOOL CCedtApp::m_bAllowMultiInstances = FALSE;
BOOL CCedtApp::m_bFirstInstance = TRUE;
BOOL CCedtApp::m_bDoubleByteCharacterSet = FALSE;
BOOL CCedtApp::m_bCreateNewDocumentOnStartup;
BOOL CCedtApp::m_bReloadWorkingFilesOnStartup;
// global cursor resources
HCURSOR CCedtApp::m_hCursorArrow, CCedtApp::m_hCursorIBeam, CCedtApp::m_hCursorCross;
HCURSOR CCedtApp::m_hCursorRightArrow, CCedtApp::m_hCursorArrowMacro, CCedtApp::m_hCursorIBeamMacro;
// ftp accounts and file filters
CFtpAccount CCedtApp::m_clsFtpAccounts[MAX_FTP_ACCOUNT];
CFileFilter CCedtApp::m_clsFileFilters[MAX_FILE_FILTER];
INT CCedtApp::m_nFilterIndexDialog = 0;
INT CCedtApp::m_nFilterIndexPannel = 0;
// html help initialization
BOOL CCedtApp::m_bHtmlHelpInitialized = FALSE;
DWORD CCedtApp::m_dwHtmlHelpCookie = 0x00;
// open template
CString CCedtApp::m_szOpenTemplatePathName;
BOOL CCedtApp::m_bOpenTemplate;
/////////////////////////////////////////////////////////////////////////////
// CCedtApp
BEGIN_MESSAGE_MAP(CCedtApp, CWinApp)
//{{AFX_MSG_MAP(CCedtApp)
ON_UPDATE_COMMAND_UI(ID_FILE_MRU_FILE1, OnUpdateFileMruFile1)
ON_COMMAND(ID_FILE_OPEN, OnFileOpen)
ON_COMMAND(ID_APP_ABOUT, OnAppAbout)
ON_COMMAND(ID_HELP_TOPICS, OnHelpTopics)
ON_COMMAND(ID_HELP_VISIT_HOMEPAGE, OnHelpVisitHomepage)
ON_COMMAND(ID_HELP_FEEDBACK, OnHelpFeedback)
ON_COMMAND(ID_TOOL_PREFERENCES, OnToolPreferences)
ON_COMMAND(ID_MACRO_CONFIGURE, OnMacroConfigure)
ON_COMMAND(ID_COMMAND_CONFIGURE, OnCommandConfigure)
ON_COMMAND(ID_VIEW_SET_COLORS, OnViewSetColors)
ON_COMMAND(ID_FILE_FTP_SETTINGS, OnFileFtpSettings)
ON_COMMAND(ID_FILE_OPEN_REMOTE, OnFileOpenRemote)
ON_COMMAND(ID_FILE_OPEN_TEMPLATE, OnFileOpenTemplate)
ON_COMMAND(ID_VIEW_SET_LINE_SPACING, OnViewSetLineSpacing)
ON_COMMAND(ID_VIEW_SET_TAB_SIZE, OnViewSetTabSize)
ON_COMMAND(ID_FILE_CLOSE_ALL, OnFileCloseAll)
ON_COMMAND(ID_DOCU_SYNTAX_CUSTOMIZE, OnDocuSyntaxCustomize)
ON_COMMAND(ID_VIEW_COLUMN_MARKERS, OnViewColumnMarkers)
ON_COMMAND(ID_SEARCH_FIND_IN_FILES, OnSearchFindInFiles)
ON_COMMAND(ID_PROJECT_NEW, OnProjectNew)
ON_COMMAND(ID_PROJECT_OPEN, OnProjectOpen)
ON_COMMAND(ID_PROJECT_CLOSE, OnProjectClose)
ON_UPDATE_COMMAND_UI(ID_PROJECT_CLOSE, OnUpdateProjectClose)
ON_COMMAND(ID_PROJECT_NEW_CATEGORY, OnProjectNewCategory)
ON_UPDATE_COMMAND_UI(ID_PROJECT_NEW_CATEGORY, OnUpdateProjectNewCategory)
ON_COMMAND(ID_PROJECT_ADD_FILES_TO, OnProjectAddFilesTo)
ON_UPDATE_COMMAND_UI(ID_PROJECT_ADD_FILES_TO, OnUpdateProjectAddFilesTo)
ON_COMMAND(ID_PROJECT_ADD_ACTIVE_FILE, OnProjectAddActiveFile)
ON_UPDATE_COMMAND_UI(ID_PROJECT_ADD_ACTIVE_FILE, OnUpdateProjectAddActiveFile)
ON_COMMAND(ID_PROJECT_ADD_OPEN_FILES, OnProjectAddOpenFiles)
ON_UPDATE_COMMAND_UI(ID_PROJECT_ADD_OPEN_FILES, OnUpdateProjectAddOpenFiles)
ON_COMMAND(ID_VIEW_SET_SCREEN_FONTS, OnViewSetScreenFonts)
ON_COMMAND(ID_VIEW_SET_PRINTER_FONTS, OnViewSetPrinterFonts)
ON_UPDATE_COMMAND_UI(ID_COMMAND_USER_FILE0, OnUpdateCommandUserFile0)
ON_UPDATE_COMMAND_UI(ID_MACRO_USER_FILE0, OnUpdateMacroUserFile0)
ON_COMMAND(ID_COMMAND_USER_FILE0, OnCommandUserFile0)
ON_COMMAND(ID_COMMAND_USER_FILE1, OnCommandUserFile1)
ON_COMMAND(ID_COMMAND_USER_FILE2, OnCommandUserFile2)
ON_COMMAND(ID_COMMAND_USER_FILE3, OnCommandUserFile3)
ON_COMMAND(ID_COMMAND_USER_FILE4, OnCommandUserFile4)
ON_COMMAND(ID_COMMAND_USER_FILE5, OnCommandUserFile5)
ON_COMMAND(ID_COMMAND_USER_FILE6, OnCommandUserFile6)
ON_COMMAND(ID_COMMAND_USER_FILE7, OnCommandUserFile7)
ON_COMMAND(ID_MACRO_USER_FILE0, OnMacroUserFile0)
ON_COMMAND(ID_MACRO_USER_FILE1, OnMacroUserFile1)
ON_COMMAND(ID_MACRO_USER_FILE2, OnMacroUserFile2)
ON_COMMAND(ID_MACRO_USER_FILE3, OnMacroUserFile3)
ON_COMMAND(ID_MACRO_USER_FILE4, OnMacroUserFile4)
ON_COMMAND(ID_MACRO_USER_FILE5, OnMacroUserFile5)
ON_COMMAND(ID_MACRO_USER_FILE6, OnMacroUserFile6)
ON_COMMAND(ID_MACRO_USER_FILE7, OnMacroUserFile7)
ON_COMMAND(ID_EDIT_COLUMN_MODE, OnEditColumnMode)
ON_UPDATE_COMMAND_UI(ID_EDIT_COLUMN_MODE, OnUpdateEditColumnMode)
ON_COMMAND(ID_INDICATOR_OVR, OnIndicatorOvr)
ON_COMMAND(ID_VIEW_LINE_NUMBERS, OnViewLineNumbers)
ON_UPDATE_COMMAND_UI(ID_VIEW_LINE_NUMBERS, OnUpdateViewLineNumbers)
ON_COMMAND(ID_VIEW_LINE_SPACING100, OnViewLineSpacing100)
ON_COMMAND(ID_VIEW_LINE_SPACING110, OnViewLineSpacing110)
ON_COMMAND(ID_VIEW_LINE_SPACING120, OnViewLineSpacing120)
ON_COMMAND(ID_VIEW_LINE_SPACING150, OnViewLineSpacing150)
ON_COMMAND(ID_VIEW_LINE_SPACING200, OnViewLineSpacing200)
ON_UPDATE_COMMAND_UI(ID_VIEW_LINE_SPACING100, OnUpdateViewLineSpacing100)
ON_UPDATE_COMMAND_UI(ID_VIEW_LINE_SPACING110, OnUpdateViewLineSpacing110)
ON_UPDATE_COMMAND_UI(ID_VIEW_LINE_SPACING120, OnUpdateViewLineSpacing120)
ON_UPDATE_COMMAND_UI(ID_VIEW_LINE_SPACING150, OnUpdateViewLineSpacing150)
ON_UPDATE_COMMAND_UI(ID_VIEW_LINE_SPACING200, OnUpdateViewLineSpacing200)
ON_COMMAND(ID_VIEW_SCREEN_FONT0, OnViewScreenFont0)
ON_COMMAND(ID_VIEW_SCREEN_FONT1, OnViewScreenFont1)
ON_COMMAND(ID_VIEW_SCREEN_FONT2, OnViewScreenFont2)
ON_COMMAND(ID_VIEW_SCREEN_FONT3, OnViewScreenFont3)
ON_COMMAND(ID_VIEW_SCREEN_FONT4, OnViewScreenFont4)
ON_COMMAND(ID_VIEW_SCREEN_FONT5, OnViewScreenFont5)
ON_UPDATE_COMMAND_UI(ID_VIEW_SCREEN_FONT0, OnUpdateViewScreenFont0)
ON_UPDATE_COMMAND_UI(ID_VIEW_SCREEN_FONT1, OnUpdateViewScreenFont1)
ON_UPDATE_COMMAND_UI(ID_VIEW_SCREEN_FONT2, OnUpdateViewScreenFont2)
ON_UPDATE_COMMAND_UI(ID_VIEW_SCREEN_FONT3, OnUpdateViewScreenFont3)
ON_UPDATE_COMMAND_UI(ID_VIEW_SCREEN_FONT4, OnUpdateViewScreenFont4)
ON_UPDATE_COMMAND_UI(ID_VIEW_SCREEN_FONT5, OnUpdateViewScreenFont5)
ON_COMMAND(ID_VIEW_PRINTER_FONT0, OnViewPrinterFont0)
ON_COMMAND(ID_VIEW_PRINTER_FONT1, OnViewPrinterFont1)
ON_COMMAND(ID_VIEW_PRINTER_FONT2, OnViewPrinterFont2)
ON_COMMAND(ID_VIEW_PRINTER_FONT3, OnViewPrinterFont3)
ON_UPDATE_COMMAND_UI(ID_VIEW_PRINTER_FONT0, OnUpdateViewPrinterFont0)
ON_UPDATE_COMMAND_UI(ID_VIEW_PRINTER_FONT1, OnUpdateViewPrinterFont1)
ON_UPDATE_COMMAND_UI(ID_VIEW_PRINTER_FONT2, OnUpdateViewPrinterFont2)
ON_UPDATE_COMMAND_UI(ID_VIEW_PRINTER_FONT3, OnUpdateViewPrinterFont3)
ON_COMMAND(ID_VIEW_TAB_SIZE02, OnViewTabSize02)
ON_COMMAND(ID_VIEW_TAB_SIZE04, OnViewTabSize04)
ON_COMMAND(ID_VIEW_TAB_SIZE08, OnViewTabSize08)
ON_COMMAND(ID_VIEW_TAB_SIZE16, OnViewTabSize16)
ON_UPDATE_COMMAND_UI(ID_VIEW_TAB_SIZE02, OnUpdateViewTabSize02)
ON_UPDATE_COMMAND_UI(ID_VIEW_TAB_SIZE04, OnUpdateViewTabSize04)
ON_UPDATE_COMMAND_UI(ID_VIEW_TAB_SIZE08, OnUpdateViewTabSize08)
ON_UPDATE_COMMAND_UI(ID_VIEW_TAB_SIZE16, OnUpdateViewTabSize16)
ON_COMMAND(ID_VIEW_EMBOLDEN_KEYWORDS, OnViewEmboldenKeywords)
ON_UPDATE_COMMAND_UI(ID_VIEW_EMBOLDEN_KEYWORDS, OnUpdateViewEmboldenKeywords)
ON_COMMAND(ID_VIEW_ITALICIZE_COMMENT, OnViewItalicizeComment)
ON_UPDATE_COMMAND_UI(ID_VIEW_ITALICIZE_COMMENT, OnUpdateViewItalicizeComment)
ON_COMMAND(ID_VIEW_SHOW_SPACES, OnViewShowSpaces)
ON_UPDATE_COMMAND_UI(ID_VIEW_SHOW_SPACES, OnUpdateViewShowSpaces)
ON_COMMAND(ID_VIEW_SHOW_TAB_CHARS, OnViewShowTabChars)
ON_UPDATE_COMMAND_UI(ID_VIEW_SHOW_TAB_CHARS, OnUpdateViewShowTabChars)
ON_COMMAND(ID_VIEW_SHOW_LINE_BREAK, OnViewShowLineBreak)
ON_UPDATE_COMMAND_UI(ID_VIEW_SHOW_LINE_BREAK, OnUpdateViewShowLineBreak)
ON_COMMAND(ID_HELP_SPONSORING, OnHelpSponsoring)
ON_COMMAND(ID_DIRECTORY_ITEM_OPEN, OnDirectoryItemOpen)
ON_COMMAND(ID_DIRECTORY_ITEM_EXECUTE, OnDirectoryItemExecute)
ON_COMMAND(ID_DIRECTORY_ITEM_EXPLORE, OnDirectoryItemExplore)
ON_COMMAND(ID_DIRECTORY_ITEM_FIND, OnDirectoryItemFind)
ON_COMMAND(ID_DIRECTORY_ITEM_SETWORKDIR, OnDirectoryItemSetWorkdir)
ON_COMMAND(ID_DIRECTORY_ITEM_MOVE, OnDirectoryItemMove)
ON_COMMAND(ID_DIRECTORY_ITEM_COPY, OnDirectoryItemCopy)
ON_COMMAND(ID_DIRECTORY_ITEM_RENAME, OnDirectoryItemRename)
ON_COMMAND(ID_DIRECTORY_ITEM_DELETE, OnDirectoryItemDelete)
ON_COMMAND(ID_DIRECTORY_ITEM_REFRESH, OnDirectoryItemRefresh)
ON_COMMAND(ID_PROJECT_ITEM_OPEN, OnProjectItemOpen)
ON_COMMAND(ID_PROJECT_ITEM_EXECUTE, OnProjectItemExecute)
ON_COMMAND(ID_PROJECT_ITEM_REMOVE, OnProjectItemRemove)
ON_COMMAND(ID_PROJECT_ITEM_RENAME, OnProjectItemRename)
//}}AFX_MSG_MAP
// Standard file based document commands
ON_COMMAND(ID_FILE_NEW, CWinApp::OnFileNew)
ON_COMMAND(ID_FILE_OPEN, CWinApp::OnFileOpen)
// Standard print setup command
ON_COMMAND(ID_FILE_PRINT_SETUP, CWinApp::OnFilePrintSetup)
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CCedtApp construction
CCedtApp::CCedtApp()
{
m_bPostOpenDocument = FALSE;
m_nPostOpenFtpAccount = -1;
m_szPostOpenPathName = "";
m_dwPostOpenFileSize = 0;
m_nPostOpenLineNum = 0;
m_szPrevWorkspacePathName = "";
m_bProjectLoaded = FALSE;
m_szProjectPathName = "";
}
/////////////////////////////////////////////////////////////////////////////
// The one and only CCedtApp object
CCedtApp theApp;
/////////////////////////////////////////////////////////////////////////////
// CCedtApp initialization
BOOL CCedtApp::InitInstance()
{
// Change the registry key under which our settings are stored.
SetRegistryKey(STRING_COMPANYNAME);
// read InstallDir from the registry
if( ! GetRegKeyValue(HKEY_LOCAL_MACHINE, REGPATH_INSTALL_DIRECTORY, "InstallDir", m_szInstallDirectory) ) {
CString szMessage; szMessage.Format(IDS_ERR_REGISTRY, REGPATH_INSTALL_DIRECTORY);
AfxMessageBox(szMessage, MB_OK | MB_ICONSTOP); return FALSE;
}
// get current working directory
TCHAR szTemp[MAX_PATH]; GetCurrentDirectory(MAX_PATH, szTemp);
m_szLoadingDirectory = ChopDirectory(szTemp);
// load multi-instance flag
m_bAllowMultiInstances = FALSE;
if( ! LoadMultiInstancesFlag(REGKEY_ALLOW_MULTI) ) return FALSE;
// is it first instance ?
m_bFirstInstance = TRUE;
if( nFirstThreadID ) m_bFirstInstance = FALSE;
if( ! m_bAllowMultiInstances && ! m_bFirstInstance ) {
// do not allow multi-instance
CMutex mutex(FALSE, MUTEX_NAME_CMDLINE);
CSingleLock lock( & mutex ); lock.Lock();
ofstream fout(m_szInstallDirectory + "\\cmdline.txt", ios::out | ios::app);
fout << "/D:\"" << m_szLoadingDirectory << "\"";
fout << " " << m_lpCmdLine << endl;
fout.close();
lock.Unlock();
if( hFirstWindow && ::IsIconic(hFirstWindow) ) ShowWindow(hFirstWindow, SW_RESTORE);
if( hFirstWindow ) ::SetForegroundWindow(hFirstWindow);
::PostThreadMessage(nFirstThreadID, WM_ANOTHER_INSTANCE, 0, 0L);
// ghost exit here !!!
return FALSE;
} else {
// otherwise save thread id for later use
nFirstThreadID = m_nThreadID;
}
// Initialize OLE 2.0 libraries
if( ! AfxOleInit() ) {
AfxMessageBox(IDS_ERR_OLE_INIT);
return FALSE;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -