📄 wndmain.cpp
字号:
//
// WndMain.cpp
//
// Copyright (c) Shareaza Development Team, 2002-2004.
// This file is part of SHAREAZA (www.shareaza.com)
//
// Shareaza 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.
//
// Shareaza 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 Shareaza; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
//
#include "StdAfx.h"
#include "Shareaza.h"
#include "Settings.h"
#include "CoolInterface.h"
#include "CoolMenu.h"
#include "Network.h"
#include "Handshake.h"
#include "HostCache.h"
#include "Neighbours.h"
#include "Transfers.h"
#include "Downloads.h"
#include "Library.h"
#include "LibraryBuilder.h"
#include "Plugins.h"
#include "QuerySearch.h"
#include "VersionChecker.h"
#include "GraphItem.h"
#include "ShareazaURL.h"
#include "ChatCore.h"
#include "ChatSession.h"
#include "Statistics.h"
#include "Plugins.h"
#include "BTInfo.h"
#include "Skin.h"
#include "SkinWindow.h"
#include "WndMain.h"
#include "WndChild.h"
#include "WndSystem.h"
#include "WndNeighbours.h"
#include "WndTraffic.h"
#include "WndDownloads.h"
#include "WndUploads.h"
#include "WndLibrary.h"
#include "WndMedia.h"
#include "WndHostCache.h"
#include "WndDiscovery.h"
#include "WndPacket.h"
#include "WndSearchPad.h"
#include "WndSearchMonitor.h"
#include "WndHitMonitor.h"
#include "WndSecurity.h"
#include "WndSearch.h"
#include "WndBrowseHost.h"
#include "WndHome.h"
#include "WndHelp.h"
#include "WizardSheet.h"
#include "DlgSettingsManager.h"
#include "DlgShareManager.h"
#include "DlgAbout.h"
#include "DlgConnectTo.h"
#include "DlgNewSearch.h"
#include "DlgDownload.h"
#include "DlgURLAction.h"
#include "DlgUpgrade.h"
#include "DlgDownloadMonitor.h"
#include "DlgFilePreview.h"
#include "DlgLanguage.h"
#include "DlgProfileManager.h"
#include "DlgWarnings.h"
#include "DlgPromote.h"
#include "DlgCloseMode.h"
IMPLEMENT_DYNCREATE(CMainWnd, CMDIFrameWnd)
BEGIN_INTERFACE_MAP(CMainWnd, CMDIFrameWnd)
INTERFACE_PART(CMainWnd, IID_IDropTarget, DropTarget)
END_INTERFACE_MAP()
BEGIN_MESSAGE_MAP(CMainWnd, CMDIFrameWnd)
ON_WM_CREATE()
ON_WM_DESTROY()
ON_WM_CLOSE()
ON_WM_MEASUREITEM()
ON_WM_DRAWITEM()
ON_WM_INITMENUPOPUP()
ON_WM_SYSCOLORCHANGE()
ON_WM_TIMER()
ON_WM_CONTEXTMENU()
ON_WM_SYSCOMMAND()
ON_WM_ACTIVATEAPP()
ON_WM_ACTIVATE()
ON_WM_NCLBUTTONDBLCLK()
ON_WM_NCCALCSIZE()
ON_WM_NCHITTEST()
ON_WM_NCPAINT()
ON_WM_NCACTIVATE()
ON_WM_NCMOUSEMOVE()
ON_WM_NCLBUTTONDOWN()
ON_WM_NCLBUTTONUP()
ON_WM_SIZE()
ON_WM_GETMINMAXINFO()
ON_WM_ENDSESSION()
ON_WM_WINDOWPOSCHANGING()
ON_MESSAGE(WM_WINSOCK, OnWinsock)
ON_MESSAGE(WM_URL, OnHandleURL)
ON_MESSAGE(WM_COLLECTION, OnHandleCollection)
ON_MESSAGE(WM_VERSIONCHECK, OnVersionCheck)
ON_MESSAGE(WM_OPENCHAT, OnOpenChat)
ON_MESSAGE(WM_OPENSEARCH, OnOpenSearch)
ON_MESSAGE(WM_TRAY, OnTray)
ON_MESSAGE(WM_LOG, OnLog)
ON_MESSAGE(WM_SKINCHANGED, OnSkinChanged)
ON_MESSAGE(WM_AFX_SETMESSAGESTRING, OnSetMessageString)
ON_MESSAGE(WM_SETTEXT, OnSetText)
ON_MESSAGE(0x0319, OnMediaKey)
ON_MESSAGE(WM_DEVMODECHANGE, OnDevModeChange)
ON_MESSAGE(WM_DISPLAYCHANGE, OnDisplayChange)
ON_UPDATE_COMMAND_UI_RANGE(ID_PLUGIN_FIRST, ID_PLUGIN_LAST, OnUpdatePluginRange)
ON_UPDATE_COMMAND_UI(ID_VIEW_SYSTEM, OnUpdateViewSystem)
ON_COMMAND(ID_VIEW_SYSTEM, OnViewSystem)
ON_UPDATE_COMMAND_UI(ID_VIEW_NEIGHBOURS, OnUpdateViewNeighbours)
ON_COMMAND(ID_VIEW_NEIGHBOURS, OnViewNeighbours)
ON_UPDATE_COMMAND_UI(ID_NETWORK_CONNECT, OnUpdateNetworkConnect)
ON_COMMAND(ID_NETWORK_CONNECT, OnNetworkConnect)
ON_UPDATE_COMMAND_UI(ID_NETWORK_DISCONNECT, OnUpdateNetworkDisconnect)
ON_COMMAND(ID_NETWORK_DISCONNECT, OnNetworkDisconnect)
ON_UPDATE_COMMAND_UI(ID_VIEW_PACKETS, OnUpdateViewPackets)
ON_COMMAND(ID_VIEW_PACKETS, OnViewPackets)
ON_UPDATE_COMMAND_UI(ID_VIEW_HOSTS, OnUpdateViewHosts)
ON_COMMAND(ID_VIEW_HOSTS, OnViewHosts)
ON_COMMAND(ID_NETWORK_CONNECT_TO, OnNetworkConnectTo)
ON_UPDATE_COMMAND_UI(ID_VIEW_SEARCH_MONITOR, OnUpdateViewSearchMonitor)
ON_COMMAND(ID_VIEW_SEARCH_MONITOR, OnViewSearchMonitor)
ON_COMMAND(ID_NETWORK_EXIT, OnNetworkExit)
ON_UPDATE_COMMAND_UI(ID_NETWORK_SEARCH, OnUpdateNetworkSearch)
ON_COMMAND(ID_NETWORK_SEARCH, OnNetworkSearch)
ON_UPDATE_COMMAND_UI(ID_VIEW_RESULTS_MONITOR, OnUpdateViewResultsMonitor)
ON_COMMAND(ID_VIEW_RESULTS_MONITOR, OnViewResultsMonitor)
ON_UPDATE_COMMAND_UI(ID_NETWORK_CONNECT_TO, OnUpdateNetworkConnectTo)
ON_UPDATE_COMMAND_UI(ID_VIEW_DOWNLOADS, OnUpdateViewDownloads)
ON_COMMAND(ID_VIEW_DOWNLOADS, OnViewDownloads)
ON_UPDATE_COMMAND_UI(ID_VIEW_LIBRARY, OnUpdateViewLibrary)
ON_COMMAND(ID_VIEW_LIBRARY, OnViewLibrary)
ON_UPDATE_COMMAND_UI(ID_VIEW_UPLOADS, OnUpdateViewUploads)
ON_COMMAND(ID_VIEW_UPLOADS, OnViewUploads)
ON_COMMAND(ID_TOOLS_SETTINGS, OnToolsSettings)
ON_COMMAND(ID_HELP_ABOUT, OnHelpAbout)
ON_COMMAND(ID_HELP_HOMEPAGE, OnHelpHomepage)
ON_COMMAND(ID_HELP_WEB_1, OnHelpWeb1)
ON_COMMAND(ID_HELP_WEB_2, OnHelpWeb2)
ON_COMMAND(ID_HELP_WEB_3, OnHelpWeb3)
ON_COMMAND(ID_HELP_FAQ, OnHelpFaq)
ON_UPDATE_COMMAND_UI(ID_VIEW_TRAFFIC, OnUpdateViewTraffic)
ON_COMMAND(ID_VIEW_TRAFFIC, OnViewTraffic)
ON_COMMAND(ID_WINDOW_CASCADE, OnWindowCascade)
ON_COMMAND(ID_TOOLS_WIZARD, OnToolsWizard)
ON_COMMAND(ID_TRAY_OPEN, OnTrayOpen)
ON_UPDATE_COMMAND_UI(ID_NETWORK_AUTO_CLOSE, OnUpdateNetworkAutoClose)
ON_COMMAND(ID_NETWORK_AUTO_CLOSE, OnNetworkAutoClose)
ON_COMMAND(ID_HELP_WEB_4, OnHelpWeb4)
ON_COMMAND(ID_HELP_WEB_5, OnHelpWeb5)
ON_COMMAND(ID_HELP_WEB_6, OnHelpWeb6)
ON_UPDATE_COMMAND_UI(ID_TOOLS_DOWNLOAD, OnUpdateToolsDownload)
ON_COMMAND(ID_TOOLS_DOWNLOAD, OnToolsDownload)
ON_UPDATE_COMMAND_UI(ID_VIEW_SECURITY, OnUpdateViewSecurity)
ON_COMMAND(ID_VIEW_SECURITY, OnViewSecurity)
ON_UPDATE_COMMAND_UI(ID_WINDOW_CASCADE, OnUpdateWindowCascade)
ON_UPDATE_COMMAND_UI(ID_WINDOW_TILE_HORZ, OnUpdateWindowTileHorz)
ON_UPDATE_COMMAND_UI(ID_WINDOW_TILE_VERT, OnUpdateWindowTileVert)
ON_UPDATE_COMMAND_UI(ID_TAB_CONNECT, OnUpdateTabConnect)
ON_COMMAND(ID_TAB_CONNECT, OnTabConnect)
ON_UPDATE_COMMAND_UI(ID_TAB_NETWORK, OnUpdateTabNetwork)
ON_COMMAND(ID_TAB_NETWORK, OnTabNetwork)
ON_UPDATE_COMMAND_UI(ID_TAB_LIBRARY, OnUpdateTabLibrary)
ON_COMMAND(ID_TAB_LIBRARY, OnTabLibrary)
ON_UPDATE_COMMAND_UI(ID_TAB_TRANSFERS, OnUpdateTabTransfers)
ON_COMMAND(ID_TAB_TRANSFERS, OnTabTransfers)
ON_UPDATE_COMMAND_UI(ID_VIEW_TABBED, OnUpdateViewTabbed)
ON_COMMAND(ID_VIEW_TABBED, OnViewTabbed)
ON_UPDATE_COMMAND_UI(ID_VIEW_WINDOWED, OnUpdateViewWindowed)
ON_COMMAND(ID_VIEW_WINDOWED, OnViewWindowed)
ON_UPDATE_COMMAND_UI(ID_VIEW_DISCOVERY, OnUpdateViewDiscovery)
ON_COMMAND(ID_VIEW_DISCOVERY, OnViewDiscovery)
ON_UPDATE_COMMAND_UI(ID_TAB_HOME, OnUpdateTabHome)
ON_COMMAND(ID_TAB_HOME, OnTabHome)
ON_COMMAND(ID_TOOLS_RESKIN, OnToolsReskin)
ON_UPDATE_COMMAND_UI(ID_WINDOW_TABBAR, OnUpdateWindowTabBar)
ON_COMMAND(ID_WINDOW_TABBAR, OnWindowTabBar)
ON_UPDATE_COMMAND_UI(ID_WINDOW_TOOLBAR, OnUpdateWindowToolBar)
ON_COMMAND(ID_WINDOW_TOOLBAR, OnWindowToolBar)
ON_UPDATE_COMMAND_UI(ID_WINDOW_MONITOR, OnUpdateWindowMonitor)
ON_COMMAND(ID_WINDOW_MONITOR, OnWindowMonitor)
ON_COMMAND(ID_NETWORK_BROWSE_TO, OnNetworkBrowseTo)
ON_COMMAND(ID_TOOLS_SKIN, OnToolsSkin)
ON_COMMAND(ID_TOOLS_LANGUAGE, OnToolsLanguage)
ON_COMMAND(ID_TOOLS_MERCORA, OnToolsMercora)
ON_UPDATE_COMMAND_UI(ID_VIEW_MEDIA, OnUpdateViewMedia)
ON_COMMAND(ID_VIEW_MEDIA, OnViewMedia)
ON_UPDATE_COMMAND_UI(ID_TAB_MEDIA, OnUpdateTabMedia)
ON_COMMAND(ID_TAB_MEDIA, OnTabMedia)
ON_UPDATE_COMMAND_UI(ID_TAB_SEARCH, OnUpdateTabSearch)
ON_COMMAND(ID_TAB_SEARCH, OnTabSearch)
ON_COMMAND(ID_TOOLS_PROFILE, OnToolsProfile)
ON_UPDATE_COMMAND_UI(ID_VIEW_HELP, OnUpdateViewHelp)
ON_COMMAND(ID_VIEW_HELP, OnViewHelp)
ON_UPDATE_COMMAND_UI(ID_TAB_HELP, OnUpdateTabHelp)
ON_COMMAND(ID_TAB_HELP, OnTabHelp)
ON_COMMAND(ID_LIBRARY_FOLDERS, OnLibraryFolders)
ON_COMMAND(ID_HELP_WARNINGS, OnHelpWarnings)
ON_COMMAND(ID_HELP_PROMOTE, OnHelpPromote)
ON_COMMAND(ID_HELP_FIREWALLS, OnHelpFirewalls)
ON_UPDATE_COMMAND_UI(ID_NETWORK_G2, OnUpdateNetworkG2)
ON_COMMAND(ID_NETWORK_G2, OnNetworkG2)
ON_UPDATE_COMMAND_UI(ID_NETWORK_G1, OnUpdateNetworkG1)
ON_COMMAND(ID_NETWORK_G1, OnNetworkG1)
ON_UPDATE_COMMAND_UI(ID_NETWORK_ED2K, OnUpdateNetworkED2K)
ON_COMMAND(ID_NETWORK_ED2K, OnNetworkED2K)
ON_UPDATE_COMMAND_UI(ID_VIEW_BASIC, OnUpdateViewBasic)
ON_COMMAND(ID_VIEW_BASIC, OnViewBasic)
ON_COMMAND(ID_HELP_FORUMS, OnHelpForums)
ON_UPDATE_COMMAND_UI(ID_LIBRARY_HASH_PRIORITY, OnUpdateLibraryHashPriority)
ON_COMMAND(ID_LIBRARY_HASH_PRIORITY, OnLibraryHashPriority)
ON_UPDATE_COMMAND_UI(ID_WINDOW_NAVBAR, OnUpdateWindowNavBar)
ON_COMMAND(ID_WINDOW_NAVBAR, OnWindowNavBar)
ON_UPDATE_COMMAND_UI(ID_WINDOW_REMOTE, OnUpdateWindowRemote)
ON_COMMAND(ID_WINDOW_REMOTE, OnWindowRemote)
ON_COMMAND(ID_MONITOR_CLOSE, OnRemoteClose)
ON_UPDATE_COMMAND_UI(ID_MEDIA_PLAY, OnUpdateMediaCommand)
ON_UPDATE_COMMAND_UI(ID_MEDIA_ADD, OnUpdateMediaCommand)
ON_UPDATE_COMMAND_UI(ID_MEDIA_ADD_FOLDER, OnUpdateMediaCommand)
ON_COMMAND(ID_MEDIA_PLAY, OnMediaCommand)
ON_COMMAND(ID_MEDIA_ADD, OnMediaCommand)
ON_COMMAND(ID_MEDIA_ADD_FOLDER, OnMediaCommand)
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CMainWnd construction
CMainWnd::CMainWnd()
{
theApp.m_pMainWnd = this;
m_hInstance = AfxGetResourceHandle();
m_pSkin = NULL;
m_pURLDialog = NULL;
m_tURLTime = 0;
LoadFrame( IDR_MAINFRAME, WS_OVERLAPPEDWINDOW );
theApp.m_pSafeWnd = this;
}
CMainWnd::~CMainWnd()
{
theApp.m_pSafeWnd = NULL;
}
/////////////////////////////////////////////////////////////////////////////
// CMainWnd create window
BOOL CMainWnd::PreCreateWindow(CREATESTRUCT& cs)
{
WNDCLASS wndcls;
ZeroMemory( &wndcls, sizeof(WNDCLASS) );
wndcls.style = CS_DBLCLKS;
wndcls.lpfnWndProc = AfxWndProc;
wndcls.hInstance = AfxGetInstanceHandle();
wndcls.hIcon = theApp.LoadIcon( IDR_MAINFRAME );
wndcls.hCursor = theApp.LoadStandardCursor( IDC_ARROW );
wndcls.hbrBackground = NULL;
wndcls.lpszMenuName = NULL;
wndcls.lpszClassName = _T("ShareazaMainWnd");
AfxRegisterClass( &wndcls );
cs.lpszClass = wndcls.lpszClassName;
return CMDIFrameWnd::PreCreateWindow( cs );
}
int CMainWnd::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if ( CMDIFrameWnd::OnCreate( lpCreateStruct ) == -1 ) return -1;
// Icon
SetIcon( AfxGetApp()->LoadIcon( IDI_SMALL ), FALSE );
// Status Bar
UINT wID[2] = { ID_SEPARATOR, ID_SEPARATOR };
if ( ! m_wndStatusBar.Create( this ) ) return -1;
m_wndStatusBar.SetIndicators( wID, 2 );
m_wndStatusBar.SetPaneInfo( 0, ID_SEPARATOR, SBPS_STRETCH, 0 );
m_wndStatusBar.SetPaneInfo( 1, ID_SEPARATOR, SBPS_NORMAL, 210 );
EnableDocking( CBRS_ALIGN_ANY );
// Menu Bar
SetMenu( NULL );
if ( ! m_wndMenuBar.Create( this, WS_CHILD|WS_VISIBLE|CBRS_TOP, IDW_MENU_BAR ) ) return -1;
m_wndMenuBar.SetWindowText( _T("Menubar") );
m_wndMenuBar.EnableDocking( CBRS_ALIGN_TOP | CBRS_ALIGN_BOTTOM );
DockControlBar( &m_wndMenuBar, AFX_IDW_DOCKBAR_TOP );
// Nav Bar
if ( ! m_wndNavBar.Create( this, WS_CHILD|WS_VISIBLE|CBRS_TOP, IDW_NAV_BAR ) ) return -1;
m_wndNavBar.SetWindowText( _T("Navigation Bar") );
m_wndNavBar.EnableDocking( CBRS_ALIGN_TOP | CBRS_ALIGN_BOTTOM );
m_wndNavBar.SetBarStyle( m_wndNavBar.GetBarStyle() | CBRS_TOOLTIPS );
DockControlBar( &m_wndNavBar, AFX_IDW_DOCKBAR_TOP );
ShowControlBar( &m_wndNavBar, FALSE, FALSE );
// Tool Bar
if ( ! m_wndToolBar.Create( this, WS_CHILD|CBRS_TOP, IDW_TOOL_BAR ) ) return -1;
m_wndToolBar.SetWindowText( _T("Toolbar") );
m_wndToolBar.EnableDocking( CBRS_ALIGN_TOP | CBRS_ALIGN_BOTTOM );
m_wndToolBar.SetBarStyle( m_wndToolBar.GetBarStyle() | CBRS_TOOLTIPS );
m_wndToolBar.SetGripper( TRUE );
DockControlBar( &m_wndToolBar, AFX_IDW_DOCKBAR_TOP );
ShowControlBar( &m_wndToolBar, FALSE, FALSE );
// Tab Bar
if ( ! m_wndTabBar.Create( this, WS_CHILD|WS_VISIBLE|CBRS_BOTTOM, IDW_TAB_BAR ) ) return -1;
m_wndTabBar.SetWindowText( _T("Windows") );
m_wndTabBar.EnableDocking( CBRS_ALIGN_TOP | CBRS_ALIGN_BOTTOM );
m_wndTabBar.SetBarStyle( m_wndTabBar.GetBarStyle() | CBRS_TOOLTIPS );
DockControlBar( &m_wndTabBar, AFX_IDW_DOCKBAR_TOP );
// Monitor Bar
if ( ! m_wndMonitorBar.Create( this, WS_CHILD|WS_VISIBLE|CBRS_BOTTOM, IDW_MONITOR_BAR ) ) return -1;
m_wndMonitorBar.m_pSnapBar[0] = &m_wndNavBar;
m_wndMonitorBar.m_pSnapBar[1] = &m_wndToolBar;
m_wndMonitorBar.SetWindowText( _T("Monitor") );
m_wndMonitorBar.EnableDocking( CBRS_ALIGN_TOP | CBRS_ALIGN_BOTTOM );
DockControlBar( &m_wndMonitorBar, AFX_IDW_DOCKBAR_TOP );
// Default Size
SetWindowPos( NULL, GetSystemMetrics( SM_CXSCREEN ) * 1 / 10,
GetSystemMetrics( SM_CYSCREEN ) * 1 / 10,
GetSystemMetrics( SM_CXSCREEN ) * 8 / 10,
GetSystemMetrics( SM_CYSCREEN ) * 8 / 10, 0 );
// Plugins
Plugins.Enumerate();
// Window Setup
Settings.LoadWindow( _T("CMainWnd"), this );
LoadBarState( _T("Toolbars\\CoolBar") );
if ( ! m_wndMenuBar.IsVisible() ) ShowControlBar( &m_wndMenuBar, TRUE, TRUE );
if ( ! m_wndNavBar.IsVisible() && ! m_wndToolBar.IsVisible() )
{
ShowControlBar( &m_wndNavBar, Settings.General.GUIMode != GUI_WINDOWED, TRUE );
ShowControlBar( &m_wndToolBar, Settings.General.GUIMode == GUI_WINDOWED, TRUE );
}
if ( ! m_wndTabBar.IsVisible() ) ShowControlBar( &m_wndTabBar, TRUE, FALSE );
if ( theApp.GetProfileInt( _T("Toolbars"), _T("CRemoteWnd"), TRUE ) )
m_wndRemoteWnd.Create( &m_wndMonitorBar );
m_pWindows.SetOwner( this );
SetGUIMode( Settings.General.GUIMode, FALSE );
// Boot
if ( theApp.GetProfileInt( _T("Windows"), _T("RunLanguage"), FALSE ) == FALSE )
{
ShowControlBar( &m_wndMonitorBar, FALSE, TRUE );
PostMessage( WM_COMMAND, ID_TOOLS_LANGUAGE );
}
else if ( theApp.GetProfileInt( _T("Windows"), _T("RunWarnings"), FALSE ) == FALSE )
{
PostMessage( WM_COMMAND, ID_HELP_WARNINGS );
}
else if ( theApp.GetProfileInt( _T("Windows"), _T("RunPromote"), FALSE ) == FALSE )
{
PostMessage( WM_COMMAND, ID_HELP_PROMOTE );
}
if ( Settings.Connection.AutoConnect )
PostMessage( WM_COMMAND, ID_NETWORK_CONNECT );
Settings.Live.LoadWindowState = TRUE;
RegisterDragDrop( GetSafeHwnd(), &m_xDropTarget );
// Go
m_bTrayHide = FALSE;
m_bTrayIcon = FALSE;
m_bTimer = FALSE;
SetTimer( 1, 1000, NULL );
return 0;
}
/////////////////////////////////////////////////////////////////////////////
// CMainWnd destroy window
void CMainWnd::OnClose()
{
CWaitCursor pCursor;
theApp.m_pSafeWnd = NULL;
m_pWindows.m_bClosing = TRUE;
if ( m_bTrayIcon )
{
Shell_NotifyIcon( NIM_DELETE, &m_pTray );
m_bTrayIcon = FALSE;
}
if ( ! m_bTrayHide )
{
if ( ! IsIconic() ) SaveBarState( _T("Toolbars\\CoolBar") );
theApp.WriteProfileInt( _T("Toolbars"), _T("CRemoteWnd"), m_wndRemoteWnd.IsVisible() );
Settings.SaveWindow( _T("CMainWnd"), this );
m_pWindows.SaveWindowStates();
}
m_pWindows.SaveSearchWindows();
m_pWindows.Close();
CDownloadMonitorDlg::CloseAll();
CFilePreviewDlg::CloseAll();
Network.Disconnect();
Transfers.StopThread();
Library.StopThread();
ChatCore.StopThread();
Plugins.Clear();
CMDIFrameWnd::OnClose();
}
void CMainWnd::OnDestroy()
{
KillTimer( 1 );
if ( m_wndRemoteWnd.IsVisible() ) m_wndRemoteWnd.DestroyWindow();
RevokeDragDrop( GetSafeHwnd() );
Network.Disconnect();
CMDIFrameWnd::OnDestroy();
}
void CMainWnd::OnEndSession(BOOL bEnding)
{
CMDIFrameWnd::OnEndSession( bEnding );
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -