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

📄 mainfrm.cpp

📁 一个FTP下载的源代码。代码质量非常高
💻 CPP
📖 第 1 页 / 共 5 页
字号:
// FileZilla - a Windows ftp client

// Copyright (C) 2002 - Tim Kosse <tim.kosse@gmx.de>

// This program is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License
// as published by the Free Software Foundation; either version 2
// of the License, or (at your option) any later version.

// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// GNU General Public License for more details.

// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.

// MainFrm.cpp : Implementierung der Klasse CMainFrame
//

#include "stdafx.h"
#include "FileZilla.h"

#include "MainFrm.h"
#include "LocalView.h"
#include "LocalView2.h"
#include "StatusView.h"
#include "FtpView.h"
#include "StatusView.h"
#include "TextProgressCtrl.h"
#include "sitemanager.h"
#include "QueueView.h"
#include "queuectrl.h"
#include "misc\led.h"
#include "localfilelistctrl.h"
#include "FtpListCtrl.h"
#include "dirtreectrl.h"
#include "PathFunctions.h"
#include "Entersomething.h"
#include "fileexistsdlg.h"
#include "LocalComboCompletion.h"
#include "RemoteComboCompletion.h"
#include "FileZillaApi.h"
#include "commandqueue.h"
#include "misc/systemtray.h"
#include "ftptreeview.h"
#include "version.h"
#include "ManualTransferDlg.h"
#include "AsyncRequestQueue.h"
#include "misc\MinTrayBtn.h"
#include "misc\VisualStylesXP.h"
#include "ftptreectrl.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

//Implementation in SiteManger.cpp
bool NewItem_Menu( LPVOID lpData, LPCTSTR lpszName, LPVOID lpParent, t_SiteManagerItem *site, bool isDefault, LPVOID lpDefault);
bool NewFolder_Menu( LPVOID lpData, LPCTSTR lpszName, LPVOID &lpParent);
bool After_Menu( LPVOID lpData, LPCTSTR lpszName, LPVOID lpItem);

/////////////////////////////////////////////////////////////////////////////
// CMainFrame
IMPLEMENT_DYNCREATE(CMainFrame, CFrameWnd)

BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd)
	//{{AFX_MSG_MAP(CMainFrame)
	ON_COMMAND(ID_TRAY_EXIT, OnTrayExit)
	ON_COMMAND(ID_TRAY_RESTORE, OnTrayRestore)
    ON_REGISTERED_MESSAGE(WM_FILEZILLA_PROCESSCMDLINE, OnProcessCmdLine)
	ON_COMMAND(ID_PROCESS_QUEUE, OnProcessQueue)
	ON_WM_CREATE()
	ON_BN_CLICKED(IDOK, OnQuickConnect)
	ON_WM_SIZE()
	ON_UPDATE_COMMAND_UI(ID_SHOWTREE, OnUpdateShowtree)
	ON_COMMAND(ID_SHOWTREE, OnShowtree)
	ON_COMMAND(ID_EDIT_SETTINGS, OnEditSettings)
	ON_COMMAND(ID_SITEMANAGER, OnSitemanager)
	ON_UPDATE_COMMAND_UI(ID_CANCELBUTTON, OnUpdateCancelbutton)
	ON_COMMAND(ID_SHOWQUEUE, OnShowqueue)
	ON_UPDATE_COMMAND_UI(ID_SHOWQUEUE, OnUpdateShowqueue)
	ON_WM_CLOSE()
	ON_UPDATE_COMMAND_UI(ID_PROCESS_QUEUE, OnUpdateProcessQueue)
	ON_COMMAND(ID_TOOLBAR_DISCONNECT, OnToolbarDisconnect)
	ON_UPDATE_COMMAND_UI(ID_TOOLBAR_DISCONNECT, OnUpdateToolbarDisconnect)
	ON_COMMAND(ID_TOOLBAR_REFRESH, OnToolbarRefresh)
	ON_COMMAND(ID_TOOLBAR_RECONNECT, OnToolbarReconnect)
	ON_UPDATE_COMMAND_UI(ID_TOOLBAR_RECONNECT, OnUpdateToolbarReconnect)
	ON_WM_LBUTTONUP()
	ON_WM_MOUSEMOVE()
	ON_COMMAND(ID_COPYTOSITEMANAGER, OnCopytositemanager)
	ON_UPDATE_COMMAND_UI(ID_COPYTOSITEMANAGER, OnUpdateCopytositemanager)
	ON_COMMAND(ID_TYPEMENU_ASCII, OnTypemenuAscii)
	ON_UPDATE_COMMAND_UI(ID_TYPEMENU_ASCII, OnUpdateTypemenuAscii)
	ON_COMMAND(ID_TYPEMENU_BINARY, OnTypemenuBinary)
	ON_UPDATE_COMMAND_UI(ID_TYPEMENU_BINARY, OnUpdateTypemenuBinary)
	ON_COMMAND(ID_TYPEMENU_DETECT, OnTypemenuDetect)
	ON_UPDATE_COMMAND_UI(ID_TYPEMENU_DETECT, OnUpdateTypemenuDetect)
	ON_WM_DESTROY()
	ON_COMMAND(ID_VIEW_QUICKCONNECT_BAR, OnViewQuickconnectBar)
	ON_UPDATE_COMMAND_UI(ID_VIEW_QUICKCONNECT_BAR, OnUpdateViewQuickconnectBar)
	ON_COMMAND(ID_VIEW_MESSAGELOG, OnViewMessagelog)
	ON_UPDATE_COMMAND_UI(ID_VIEW_MESSAGELOG, OnUpdateViewMessagelog)
	ON_COMMAND(ID_VIEW_STATUS_BAR, OnViewStatusBar)
	ON_COMMAND(ID_VIEW_TOOLBAR, OnViewToolbar)
	ON_COMMAND(ID_EDIT_EXPORTSETTINGS, OnEditExportsettings)
	ON_COMMAND(ID_EDIT_IMPORTSETTINGS, OnEditImportsettings)
	ON_COMMAND(ID_LOCALLISTSTYLE_ICON, OnLocalliststyleIcon)
	ON_UPDATE_COMMAND_UI(ID_LOCALLISTSTYLE_ICON, OnUpdateLocalliststyleIcon)
	ON_COMMAND(ID_LOCALLISTSTYLE_LIST, OnLocalliststyleList)
	ON_UPDATE_COMMAND_UI(ID_LOCALLISTSTYLE_LIST, OnUpdateLocalliststyleList)
	ON_COMMAND(ID_LOCALLISTSTYLE_REPORT, OnLocalliststyleReport)
	ON_UPDATE_COMMAND_UI(ID_LOCALLISTSTYLE_REPORT, OnUpdateLocalliststyleReport)
	ON_COMMAND(ID_LOCALLISTSTYLE_SMALLICON, OnLocalliststyleSmallicon)
	ON_UPDATE_COMMAND_UI(ID_LOCALLISTSTYLE_SMALLICON, OnUpdateLocalliststyleSmallicon)
	ON_COMMAND(ID_VIEW_LOCALLISTVIEW_FILESIZE, OnViewLocallistviewFilesize)
	ON_UPDATE_COMMAND_UI(ID_VIEW_LOCALLISTVIEW_FILESIZE, OnUpdateViewLocallistviewFilesize)
	ON_COMMAND(ID_VIEW_LOCALLISTVIEW_FILETYPE, OnViewLocallistviewFiletype)
	ON_UPDATE_COMMAND_UI(ID_VIEW_LOCALLISTVIEW_FILETYPE, OnUpdateViewLocallistviewFiletype)
	ON_COMMAND(ID_VIEW_LOCALLISTVIEW_LASTMODIFIEDTIME, OnViewLocallistviewLastmodifiedtime)
	ON_UPDATE_COMMAND_UI(ID_VIEW_LOCALLISTVIEW_LASTMODIFIEDTIME, OnUpdateViewLocallistviewLastmodifiedtime)
	ON_COMMAND(ID_REMOTELISTSTYLE_ICON, OnRemoteliststyleIcon)
	ON_UPDATE_COMMAND_UI(ID_REMOTELISTSTYLE_ICON, OnUpdateRemoteliststyleIcon)
	ON_COMMAND(ID_REMOTELISTSTYLE_LIST, OnRemoteliststyleList)
	ON_UPDATE_COMMAND_UI(ID_REMOTELISTSTYLE_LIST, OnUpdateRemoteliststyleList)
	ON_COMMAND(ID_REMOTELISTSTYLE_REPORT, OnRemoteliststyleReport)
	ON_UPDATE_COMMAND_UI(ID_REMOTELISTSTYLE_REPORT, OnUpdateRemoteliststyleReport)
	ON_COMMAND(ID_REMOTELISTSTYLE_SMALLICON, OnRemoteliststyleSmallicon)
	ON_UPDATE_COMMAND_UI(ID_REMOTELISTSTYLE_SMALLICON, OnUpdateRemoteliststyleSmallicon)
	ON_COMMAND(ID_VIEW_REMOTELISTVIEW_DATE, OnViewRemotelistviewDate)
	ON_UPDATE_COMMAND_UI(ID_VIEW_REMOTELISTVIEW_DATE, OnUpdateViewRemotelistviewDate)
	ON_COMMAND(ID_VIEW_REMOTELISTVIEW_TIME, OnViewRemotelistviewTime)
	ON_UPDATE_COMMAND_UI(ID_VIEW_REMOTELISTVIEW_TIME, OnUpdateViewRemotelistviewTime)
	ON_COMMAND(ID_VIEW_REMOTELISTVIEW_FILESIZE, OnViewRemotelistviewFilesize)
	ON_UPDATE_COMMAND_UI(ID_VIEW_REMOTELISTVIEW_FILESIZE, OnUpdateViewRemotelistviewFilesize)
	ON_COMMAND(ID_VIEW_REMOTELISTVIEW_FILETYPE, OnViewRemotelistviewFiletype)
	ON_UPDATE_COMMAND_UI(ID_VIEW_REMOTELISTVIEW_FILETYPE, OnUpdateViewRemotelistviewFiletype)
	ON_COMMAND(ID_VIEW_REMOTELISTVIEW_PERMISSIONS, OnViewRemotelistviewPermissions)
	ON_UPDATE_COMMAND_UI(ID_VIEW_REMOTELISTVIEW_PERMISSIONS, OnUpdateViewRemotelistviewPermissions)
	ON_COMMAND(ID_FILE_CONNECTTODEFAULTSITE, OnFileConnecttodefaultsite)
	ON_COMMAND(ID_HELPMENU_CONTENTS, OnHelpmenuContents)
	ON_COMMAND(ID_HELPMENU_INDEX, OnHelpmenuIndex)
	ON_COMMAND(ID_HELPMENU_SEARCH, OnHelpmenuSearch)
	ON_UPDATE_COMMAND_UI(ID_FILE_CONNECTTODEFAULTSITE, OnUpdateFileConnecttodefaultsite)
	ON_COMMAND(ID_OVERWRITEMENU_ASK, OnOverwritemenuAsk)
	ON_COMMAND(ID_OVERWRITEMENU_OVERWRITE, OnOverwritemenuOverwrite)
	ON_COMMAND(ID_OVERWRITEMENU_OVERWRITEIFNEWER, OnOverwritemenuOverwriteifnewer)
	ON_COMMAND(ID_OVERWRITEMENU_RESUME, OnOverwritemenuResume)
	ON_COMMAND(ID_OVERWRITEMENU_SKIP, OnOverwritemenuSkip)
	ON_UPDATE_COMMAND_UI(ID_OVERWRITEMENU_ASK, OnUpdateOverwritemenuAsk)
	ON_UPDATE_COMMAND_UI(ID_OVERWRITEMENU_OVERWRITE, OnUpdateOverwritemenuOverwrite)
	ON_UPDATE_COMMAND_UI(ID_OVERWRITEMENU_OVERWRITEIFNEWER, OnUpdateOverwritemenuOverwriteifnewer)
	ON_UPDATE_COMMAND_UI(ID_OVERWRITEMENU_RESUME, OnUpdateOverwritemenuResume)
	ON_UPDATE_COMMAND_UI(ID_OVERWRITEMENU_SKIP, OnUpdateOverwritemenuSkip)
	ON_COMMAND(ID_OVERWRITEMENU_RENAME, OnOverwritemenuRename)
	ON_UPDATE_COMMAND_UI(ID_OVERWRITEMENU_RENAME, OnUpdateOverwritemenuRename)
	ON_COMMAND(ID_MENU_QUEUE_EXPORT, OnMenuQueueExport)
	ON_UPDATE_COMMAND_UI(ID_MENU_QUEUE_EXPORT, OnUpdateMenuQueueExport)
	ON_COMMAND(ID_MENU_QUEUE_IMPORT, OnMenuQueueImport)
	ON_UPDATE_COMMAND_UI(ID_MENU_QUEUE_PROCESSNOW, OnUpdateMenuQueueProcessnow)
	ON_COMMAND(ID_MENU_QUEUE_USEMULTIPLE, OnMenuQueueUseMultiple)
	ON_UPDATE_COMMAND_UI(ID_MENU_QUEUE_USEMULTIPLE, OnUpdateMenuQueueUseMultiple)
	ON_COMMAND(ID_MENU_QUEUE_PROCESSNOW, OnMenuQueueProcessnow)
	ON_COMMAND(ID_MENU_TRANSFER_MANUALTRANSFER, OnMenuTransferManualtransfer)
	ON_WM_SYSCOMMAND()
	ON_WM_TIMER()
	ON_COMMAND(ID_MENU_SERVER_CHANGEPASS, OnMenuSiteChangepass)
	ON_UPDATE_COMMAND_UI(ID_MENU_SERVER_CHANGEPASS, OnUpdateMenuSiteChangepass)
	ON_COMMAND(ID_MENU_VIEW_SHOWHIDDEN, OnMenuViewShowhidden)
	ON_UPDATE_COMMAND_UI(ID_MENU_VIEW_SHOWHIDDEN, OnUpdateMenuViewShowhidden)
	ON_COMMAND(ID_SHOWREMOTETREE, OnShowremotetree)
	ON_UPDATE_COMMAND_UI(ID_SHOWREMOTETREE, OnUpdateShowremotetree)
	ON_COMMAND(ID_MENU_DEBUG_DUMPDIRCACHE, OnMenuDebugDumpDirectoryCache)
	ON_COMMAND(ID_MENU_DEBUG_CRASH, OnMenuDebugCrash)
	ON_COMMAND(ID_MENU_SERVER_ENTERRAWCOMMAND, OnMenuServerEnterrawcommand)
	ON_UPDATE_COMMAND_UI(ID_MENU_SERVER_ENTERRAWCOMMAND, OnUpdateMenuServerEnterrawcommand)
	ON_COMMAND(ID_QUICKCONNECTBAR_MENU_CLEAR, OnQuickconnectBarMenuClear)
	ON_COMMAND(ID_QUICKCONNECTBAR_MENU_BYPASS, OnQuickconnectBarMenuBypass)
	ON_COMMAND(ID_MENU_SERVER_COPYURLTOCLIPBOARD, OnMenuServerCopyurltoclipboard)
	ON_UPDATE_COMMAND_UI(ID_MENU_SERVER_COPYURLTOCLIPBOARD, OnUpdateMenuServerCopyurltoclipboard)
	ON_NOTIFY(TBN_DROPDOWN, AFX_IDW_TOOLBAR, OnToolbarDropDown)
	ON_COMMAND(ID_MENU_VIEW_REMOTELISTVIEW_STATUSBAR, OnMenuViewRemotelistviewStatusbar)
	ON_COMMAND(ID_MENU_VIEW_LOCALLISTVIEW_STATUSBAR, OnMenuViewLocallistviewStatusbar)
	ON_UPDATE_COMMAND_UI(ID_MENU_VIEW_REMOTELISTVIEW_STATUSBAR, OnUpdateMenuViewRemotelistviewStatusbar)
	ON_UPDATE_COMMAND_UI(ID_MENU_VIEW_LOCALLISTVIEW_STATUSBAR, OnUpdateMenuViewLocallistviewStatusbar)
	ON_COMMAND(ID_VIEW_REMOTELISTVIEW_OWNERGROUP, OnViewRemotelistviewOwnergroup)
	ON_UPDATE_COMMAND_UI(ID_VIEW_REMOTELISTVIEW_OWNERGROUP, OnUpdateViewRemotelistviewOwnergroup)
	ON_WM_GETMINMAXINFO()
	ON_COMMAND(ID_CANCELBUTTON, OnCancel)
	ON_WM_ACTIVATE()
	ON_COMMAND_RANGE(ID_MENU_VIEW_LOCALLISTVIEW_SORTBY_FILENAME, ID_MENU_VIEW_LOCALLISTVIEW_SORTBY_DESCENDING, OnMenuViewLocalSortby)
	ON_UPDATE_COMMAND_UI_RANGE(ID_MENU_VIEW_LOCALLISTVIEW_SORTBY_FILENAME, ID_MENU_VIEW_LOCALLISTVIEW_SORTBY_DESCENDING, OnUpdateMenuViewLocalSortby)
	ON_COMMAND_RANGE(ID_MENU_VIEW_REMOTELISTVIEW_SORTBY_FILENAME, ID_MENU_VIEW_REMOTELISTVIEW_SORTBY_DESCENDING, OnMenuViewRemoteSortby)
	ON_UPDATE_COMMAND_UI_RANGE(ID_MENU_VIEW_REMOTELISTVIEW_SORTBY_FILENAME, ID_MENU_VIEW_REMOTELISTVIEW_SORTBY_DESCENDING, OnUpdateMenuViewRemoteSortby)
	//}}AFX_MSG_MAP
	ON_COMMAND(ID_HELP, CFrameWnd::OnHelp)
END_MESSAGE_MAP()

static UINT indicators[] =
{
	ID_SEPARATOR,
	ID_INDICATOR_SECURESERVER,
	ID_INDICATOR_ELAPSEDTIME,
	ID_INDICATOR_TIMELEFT,
	ID_INDICATOR_PROGRESS_PANE,// Statusleistenanzeige
	ID_INDICATOR_BYTES,
	ID_INDICATOR_QUEUESIZE,
	ID_INDICATOR_RECVLED,
	ID_INDICATOR_SENDLED
};

/////////////////////////////////////////////////////////////////////////////
// CMainFrame Konstruktion/Zerst鰎ung

CMainFrame::CMainFrame()
{
	nTrayNotificationMsg_ = RegisterWindowMessage( _T("FileZilla Tray Notification Message") );	
	initialized = FALSE;
	m_nTransferType = COptions::GetOptionVal(OPTION_TRANSFERMODE);
	m_nLocalListViewStyle = m_nRemoteListViewStyle = 0;
	m_nHideLocalColumns = m_nHideRemoteColumns = 0;
	m_PosData.state = 0;
	m_PosData.cx = 432;
	m_pCommandQueue = 0;
	m_pFileZillaApi = 0;
	m_pSecureIconCtrl = new CStatic();
	m_bShowHiddenFiles = FALSE;
	m_nRecentQuickconnectCommandOffset = 0;

	m_pLocalViewHeader = NULL;
	m_pRemoteViewHeader = NULL;
	
	m_pWndReBar = NULL;
	m_pWndDlgBar = NULL;
	m_pWndToolBar = NULL;
	
	m_pMinTrayBtn = NULL;

	m_nLocalTreeViewLocation = COptions::GetOptionVal(OPTION_LOCALTREEVIEWLOCATION);
	m_nRemoteTreeViewLocation = COptions::GetOptionVal(OPTION_REMOTETREEVIEWLOCATION);

	m_bShowQuickconnect = TRUE;
	m_hLastFocus = NULL;

	m_pDragImage = NULL;
	m_pDragWnd = NULL;
	m_DropTarget = _T("");
}

CMainFrame::~CMainFrame()
{
	if (m_pCommandQueue)
		delete m_pCommandQueue;
	m_pCommandQueue=0;

	if (m_pFileZillaApi)
		delete m_pFileZillaApi;
	m_pFileZillaApi=0;

	delete m_pWndReBar;
	delete m_pWndToolBar;
	delete m_pWndDlgBar;

	delete m_pMinTrayBtn;

	delete m_pSecureIconCtrl;
}

int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
	if (CFrameWnd::OnCreate(lpCreateStruct) == -1)
		return -1;

	SetupTrayIcon();
	
	SetWindowText(GetVersionString());
	
	if (!CreateToolbars())
		return -1;

	//Create quickconnect button
	CWnd *pButton=m_pWndDlgBar->GetDlgItem(IDOK);
	CRect rect;
	pButton->GetWindowRect(rect);
	m_pWndDlgBar->ScreenToClient(rect);
	CString title;
	pButton->GetWindowText(title);
	m_wndQuickconnectButton.Create(title, WS_TABSTOP | WS_CHILD | WS_VISIBLE, rect, m_pWndDlgBar, IDOK);
	VERIFY(m_wndQuickconnectButton.AddMenuItem(ID_QUICKCONNECTBAR_MENU_BYPASS, 0));
	VERIFY(m_wndQuickconnectButton.AddMenuItem(ID_QUICKCONNECTBAR_MENU_CLEAR, 0));

	//Load recent server list
	CMarkupSTL *pXML;
	if (COptions::LockXML(&pXML))
	{
		pXML->ResetPos();
		if (pXML->FindChildElem( _T("RecentServers") ))
		{
			pXML->IntoElem();
			t_server server;
			while (COptions::LoadServer(pXML, server))
			{
				CString str=server.host;
				CString tmp;
				if (server.user.CollateNoCase(_T("anonymous")))
					str=server.user + _T("@") + str;
				if (server.nServerType&FZ_SERVERTYPE_LAYER_SSL_IMPLICIT)
				{
					if (server.port!=21)
						tmp.Format(_T("%d"), server.port);
					str=_T("ftps://")+str;
				}
				else if (server.nServerType&FZ_SERVERTYPE_SUB_FTP_SFTP)
				{
					if (server.port!=22)
						tmp.Format(_T("%d"), server.port);
					str=_T("sftp://")+str;
				}
				else if (server.port!=21)
					tmp.Format(_T("%d"), server.port);
				
				if (tmp!="")
					str+=_T(":")+tmp;
				
				if (!m_RecentQuickconnectServers.size())
					m_wndQuickconnectButton.AddMenuItem(0, MF_SEPARATOR);
				m_RecentQuickconnectServers.push_front(server);
				m_wndQuickconnectButton.InsertMenuItem(3, ID_QUICKCONNECTBAR_MENU_HISTORY1+m_nRecentQuickconnectCommandOffset++, str, 0);
				m_nRecentQuickconnectCommandOffset%=10;
				if (m_RecentQuickconnectServers.size()>=10)
					break;
			}
			pXML->OutOfElem();
		}
		COptions::UnlockXML();
	}
	else
	{
		for (int i=10; i>0; i--)
		{
			CString name;
			name.Format(_T("Software\\FileZilla\\Recent Servers\\Server %d"), i);
			HKEY key;
			if (RegOpenKey(HKEY_CURRENT_USER, name ,&key)==ERROR_SUCCESS)
			{
				t_server server;
				if (COptions::LoadServer(key, server))
				{
					CString str=server.host;
					CString tmp;
					if (server.user.CollateNoCase(_T("anonymous")))
						str=server.user + _T("@") + str;
					if (server.nServerType&FZ_SERVERTYPE_LAYER_SSL_IMPLICIT)
					{
						if (server.port!=21)
							tmp.Format(_T("%d"), server.port);
						str=_T("ftps://")+str;
					}
					else if (server.nServerType&FZ_SERVERTYPE_SUB_FTP_SFTP)
					{
						if (server.port!=22)
							tmp.Format(_T("%d"), server.port);
						str=_T("sftp://")+str;
					}
					else if (server.port!=21)
						tmp.Format(_T("%d"), server.port);
				
					if (tmp!="")
						str+=_T(":")+tmp;
				
					if (!m_RecentQuickconnectServers.size())
						m_wndQuickconnectButton.AddMenuItem(0, MF_SEPARATOR);
					m_RecentQuickconnectServers.push_front(server);
					m_wndQuickconnectButton.InsertMenuItem(3, ID_QUICKCONNECTBAR_MENU_HISTORY1+m_nRecentQuickconnectCommandOffset++, str, 0);
					m_nRecentQuickconnectCommandOffset%=10;
					if (m_RecentQuickconnectServers.size()>=10)
					{
						RegCloseKey(key);
						break;
					}
				}
				RegCloseKey(key);
			}
		}
	}
	
	if (!m_wndStatusBar.Create(this) ||
		!m_wndStatusBar.SetIndicators(indicators,
		  sizeof(indicators)/sizeof(UINT)))

⌨️ 快捷键说明

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