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

📄 wndmain.cpp

📁 著名的下载软件核心Shareaza
💻 CPP
📖 第 1 页 / 共 5 页
字号:
{
	CShareManagerDlg dlg;
	dlg.DoModal();
}

void CMainWnd::OnToolsWizard() 
{
	if ( ! IsWindowEnabled() ) return;
	theApp.WriteProfileInt( _T("Windows"), _T("RunWizard"), TRUE );
	CWizardSheet::RunWizard( this );
}

void CMainWnd::OnToolsSettings() 
{
	if ( ! IsWindowEnabled() ) return;
	CSettingsManagerDlg::Run();
}

void CMainWnd::OnToolsReskin() 
{
	OnSkinChanged( 0, 0 );
}

/////////////////////////////////////////////////////////////////////////////
// CMainWnd library hook in

void CMainWnd::OnUpdateLibraryHashPriority(CCmdUI* pCmdUI) 
{
	pCmdUI->SetCheck( LibraryBuilder.GetBoostPriority() );
}

void CMainWnd::OnLibraryHashPriority() 
{
	LibraryBuilder.BoostPriority( ! LibraryBuilder.GetBoostPriority() );
}

/////////////////////////////////////////////////////////////////////////////
// CMainWnd window menu

void CMainWnd::OnUpdateWindowCascade(CCmdUI* pCmdUI) 
{
	pCmdUI->Enable( TRUE );
}

void CMainWnd::OnWindowCascade() 
{
	m_pWindows.Cascade( GetAsyncKeyState( VK_SHIFT ) & 0x8000 );
}

void CMainWnd::OnUpdateWindowTileHorz(CCmdUI* pCmdUI) 
{
	pCmdUI->Enable( Settings.General.GUIMode == GUI_WINDOWED );
}

void CMainWnd::OnUpdateWindowTileVert(CCmdUI* pCmdUI) 
{
	pCmdUI->Enable( Settings.General.GUIMode == GUI_WINDOWED );
}

void CMainWnd::OnUpdateWindowNavBar(CCmdUI *pCmdUI)
{
	pCmdUI->SetCheck( m_wndNavBar.IsVisible() );
}

void CMainWnd::OnWindowNavBar()
{
	ShowControlBar( &m_wndToolBar, FALSE, TRUE );
	ShowControlBar( &m_wndNavBar, ! m_wndNavBar.IsVisible(), TRUE );
}

void CMainWnd::OnUpdateWindowToolBar(CCmdUI* pCmdUI) 
{
	pCmdUI->SetCheck( m_wndToolBar.IsVisible() );
}

void CMainWnd::OnWindowToolBar() 
{
	ShowControlBar( &m_wndNavBar, FALSE, TRUE );
	ShowControlBar( &m_wndToolBar, ! m_wndToolBar.IsVisible(), TRUE );
}

void CMainWnd::OnUpdateWindowTabBar(CCmdUI* pCmdUI) 
{
	pCmdUI->SetCheck( m_wndTabBar.IsVisible() );
}

void CMainWnd::OnWindowTabBar() 
{
	ShowControlBar( &m_wndTabBar, ! m_wndTabBar.IsVisible(), TRUE );
}

void CMainWnd::OnUpdateWindowMonitor(CCmdUI* pCmdUI) 
{
	pCmdUI->SetCheck( m_wndMonitorBar.IsVisible() );
}

void CMainWnd::OnWindowMonitor() 
{
	ShowControlBar( &m_wndMonitorBar, ! m_wndMonitorBar.IsVisible(), TRUE );
}

void CMainWnd::OnUpdateWindowRemote(CCmdUI *pCmdUI)
{
	pCmdUI->SetCheck( m_wndRemoteWnd.IsVisible() );
}

void CMainWnd::OnWindowRemote()
{
	if ( m_wndRemoteWnd.IsVisible() )
		m_wndRemoteWnd.DestroyWindow();
	else
		m_wndRemoteWnd.Create( &m_wndMonitorBar );
}

void CMainWnd::OnRemoteClose()
{
	if ( m_wndRemoteWnd.IsVisible() ) m_wndRemoteWnd.DestroyWindow();
}

void CMainWnd::OnUpdateMediaCommand(CCmdUI *pCmdUI)
{
	if ( CMediaFrame::g_pMediaFrame != NULL )
		pCmdUI->ContinueRouting();
	else
		pCmdUI->Enable( TRUE );
}

void CMainWnd::OnMediaCommand()
{
	if ( CMediaFrame::g_pMediaFrame == NULL ) OnTabMedia();
	if ( CMediaFrame::g_pMediaFrame == NULL ) return;
	CMediaFrame::g_pMediaFrame->SendMessage( WM_COMMAND, GetCurrentMessage()->wParam );
}

/////////////////////////////////////////////////////////////////////////////
// CMainWnd help menu

void CMainWnd::OnHelpHomepage() 
{
	ShellExecute( GetSafeHwnd(), _T("open"),
		_T("http://www.shareaza.com/?Version=") + theApp.m_sVersion,
		NULL, NULL, SW_SHOWNORMAL );
}

void CMainWnd::OnHelpFaq() 
{
	ShellExecute( GetSafeHwnd(), _T("open"),
		_T("http://www.shareaza.com/faq/"),
		NULL, NULL, SW_SHOWNORMAL );
}

void CMainWnd::OnHelpForums() 
{
	ShellExecute( GetSafeHwnd(), _T("open"),
		_T("http://forums.shareaza.com/"),
		NULL, NULL, SW_SHOWNORMAL );
}

void CMainWnd::OnHelpWarnings() 
{
	if ( IsWindowEnabled() && IsWindowVisible() && ! IsIconic() )
	{
		theApp.WriteProfileInt( _T("Windows"), _T("RunWarnings"), TRUE );
		CWarningsDlg dlg;
		dlg.DoModal();
	}
}

void CMainWnd::OnHelpPromote() 
{
	if ( IsWindowEnabled() && IsWindowVisible() && ! IsIconic() )
	{
		theApp.WriteProfileInt( _T("Windows"), _T("RunPromote"), TRUE );
		CPromoteDlg dlg;
		dlg.DoModal();
	}
}

void CMainWnd::OnHelpFirewalls()
{
	ShellExecute( GetSafeHwnd(), _T("open"), _T("http://www.shareaza.com/routers/"),
		NULL, NULL, SW_SHOWNORMAL );
}

void CMainWnd::OnHelpWeb1() 
{
	ShellExecute( GetSafeHwnd(), _T("open"), _T("http://www.zeropaid.com/"),
		NULL, NULL, SW_SHOWNORMAL );
}

void CMainWnd::OnHelpWeb2() 
{
	ShellExecute( GetSafeHwnd(), _T("open"), _T("http://www.p2pforums.com/"),
		NULL, NULL, SW_SHOWNORMAL );
}

void CMainWnd::OnHelpWeb3() 
{
	ShellExecute( GetSafeHwnd(), _T("open"), _T("http://www.slyck.com/"),
		NULL, NULL, SW_SHOWNORMAL );
}

void CMainWnd::OnHelpWeb4() 
{
	ShellExecute( GetSafeHwnd(), _T("open"), _T("http://www.napjunk.net/"),
		NULL, NULL, SW_SHOWNORMAL );
}

void CMainWnd::OnHelpWeb5() 
{
}

void CMainWnd::OnHelpWeb6() 
{
}

void CMainWnd::OnHelpAbout() 
{
	CAboutDlg dlg;
	dlg.DoModal();
	Neighbours.IsHubCapable( TRUE );
}

/////////////////////////////////////////////////////////////////////////////
// CMainWnd skin forwarding

void CMainWnd::OnSize(UINT nType, int cx, int cy) 
{
	if ( m_pSkin ) m_pSkin->OnSize( this );
	CMDIFrameWnd::OnSize( nType, cx, cy );
}

void CMainWnd::OnNcCalcSize(BOOL bCalcValidRects, NCCALCSIZE_PARAMS FAR* lpncsp) 
{
	if ( m_pSkin )
		m_pSkin->OnNcCalcSize( this, bCalcValidRects, lpncsp );
	else
		CMDIFrameWnd::OnNcCalcSize( bCalcValidRects, lpncsp );
}

UINT CMainWnd::OnNcHitTest(CPoint point) 
{
	if ( m_pSkin )
		return m_pSkin->OnNcHitTest( this, point, TRUE );
	else
		return CMDIFrameWnd::OnNcHitTest( point );
}

void CMainWnd::OnNcPaint() 
{
	if ( m_pSkin )
		m_pSkin->OnNcPaint( this );
	else
		CMDIFrameWnd::OnNcPaint();
}

BOOL CMainWnd::OnNcActivate(BOOL bActive) 
{
	if ( m_pSkin )
	{
		BOOL bVisible = IsWindowVisible();
		if ( bVisible ) ModifyStyle( WS_VISIBLE, 0 );
		BOOL bResult = CMDIFrameWnd::OnNcActivate( bActive );
		if ( bVisible ) ModifyStyle( 0, WS_VISIBLE );
		m_pSkin->OnNcActivate( this, bActive || ( m_nFlags & WF_STAYACTIVE ) );
		return bResult;
	}
	else
	{
		return CMDIFrameWnd::OnNcActivate( bActive );
	}
}

void CMainWnd::OnNcMouseMove(UINT nHitTest, CPoint point) 
{
	if ( m_pSkin ) m_pSkin->OnNcMouseMove( this, nHitTest, point );
	CMDIFrameWnd::OnNcMouseMove( nHitTest, point );
}

void CMainWnd::OnNcLButtonDown(UINT nHitTest, CPoint point) 
{
	if ( m_pSkin && m_pSkin->OnNcLButtonDown( this, nHitTest, point ) ) return;
	CMDIFrameWnd::OnNcLButtonDown( nHitTest, point );
}

void CMainWnd::OnNcLButtonUp(UINT nHitTest, CPoint point) 
{
	if ( m_pSkin && m_pSkin->OnNcLButtonUp( this, nHitTest, point ) ) return;
	CMDIFrameWnd::OnNcLButtonUp( nHitTest, point );
}

void CMainWnd::OnNcLButtonDblClk(UINT nHitTest, CPoint point) 
{
	if ( m_pSkin && m_pSkin->OnNcLButtonDblClk( this, nHitTest, point ) ) return;
	CMDIFrameWnd::OnNcLButtonDblClk( nHitTest, point );
}

LONG CMainWnd::OnSetText(WPARAM wParam, LPARAM lParam)
{
	if ( m_pSkin )
	{
		BOOL bVisible = IsWindowVisible();
		if ( bVisible ) ModifyStyle( WS_VISIBLE, 0 );
		LONG lResult = Default();
		if ( bVisible ) ModifyStyle( 0, WS_VISIBLE );
		if ( m_pSkin ) m_pSkin->OnSetText( this );
		return lResult;
	}
	else
	{
		return Default();
	}
}

/////////////////////////////////////////////////////////////////////////////
// CMainWnd IDropTarget implementation

IMPLEMENT_UNKNOWN(CMainWnd, DropTarget)

STDMETHODIMP CMainWnd::XDropTarget::DragEnter(IDataObject FAR* pDataObj, DWORD grfKeyState, POINTL pt, DWORD FAR* pdwEffect)
{
	METHOD_PROLOGUE( CMainWnd, DropTarget )
	
	if ( ObjectToFiles( pDataObj ) )
	{
		*pdwEffect = DROPEFFECT_COPY;
		return S_OK;
	}
	else if ( ObjectToURL( pDataObj ).GetLength() > 0 )
	{
		*pdwEffect = DROPEFFECT_LINK;
		return S_OK;
	}
	else
	{
		*pdwEffect = DROPEFFECT_NONE;
		return E_UNEXPECTED;
	}
}

STDMETHODIMP CMainWnd::XDropTarget::DragOver(DWORD grfKeyState, POINTL pt, DWORD FAR* pdwEffect)
{
	METHOD_PROLOGUE( CMainWnd, DropTarget )
	
	if ( m_pFiles.GetCount() > 0 )
	{
		CPoint point( pt.x, pt.y );
		pThis->ClientToScreen( &point );
		*pdwEffect = DROPEFFECT_NONE;
		
		if ( IsTorrentFile() )
		{
			*pdwEffect = DROPEFFECT_COPY;
		}
		else if ( CChildWnd* pChild = pThis->m_pWindows.FindFromPoint( point ) )
		{
			if ( pChild->OnDropFiles( m_pFiles, point, FALSE ) )
			{
				*pdwEffect = DROPEFFECT_COPY;
			}
		}
	}
	else
	{
		*pdwEffect = DROPEFFECT_LINK;
	}
	
	return S_OK;
}

STDMETHODIMP CMainWnd::XDropTarget::DragLeave()
{
	METHOD_PROLOGUE( CMainWnd, DropTarget )
	return S_OK;
}

STDMETHODIMP CMainWnd::XDropTarget::Drop(IDataObject FAR* pDataObj, DWORD grfKeyState, POINTL pt, DWORD FAR* pdwEffect)
{
	METHOD_PROLOGUE( CMainWnd, DropTarget )
	
	if ( ObjectToFiles( pDataObj ) )
	{
		CPoint point( pt.x, pt.y );
		pThis->ClientToScreen( &point );
		
		if ( IsTorrentFile() )
		{
			theApp.Message( MSG_SYSTEM, IDS_BT_PREFETCH_FILE, (LPCTSTR)m_pFiles.GetHead() );
			
			CBTInfo* pTorrent = new CBTInfo();
			
			if ( pTorrent->LoadTorrentFile( m_pFiles.GetHead() ) )
			{
				CShareazaURL* pURL = new CShareazaURL( pTorrent );
				if ( pThis->PostMessage( WM_URL, (WPARAM)pURL ) ) return S_OK;
				delete pURL;
			}
			
			delete pTorrent;
			theApp.Message( MSG_ERROR, IDS_BT_PREFETCH_ERROR, (LPCTSTR)m_pFiles.GetHead() );
		}
		else if ( CChildWnd* pChild = pThis->m_pWindows.FindFromPoint( point ) )
		{
			pChild->OnDropFiles( m_pFiles, point, TRUE );
		}
	}
	else
	{
		CString strURL = ObjectToURL( pDataObj );
		theApp.Message( MSG_SYSTEM, IDS_URL_RECEIVED, (LPCTSTR)strURL );
		
		CShareazaURL* pURL = new CShareazaURL();
		if ( pURL->Parse( strURL ) && pThis->PostMessage( WM_URL, (WPARAM)pURL ) ) return S_OK;
		delete pURL;
		
		theApp.Message( MSG_ERROR, IDS_URL_PARSE_ERROR );
	}
	
	return S_OK;
}

CString CMainWnd::XDropTarget::ObjectToURL(IDataObject* pObject)
{
	FORMATETC pFormat = { 0, NULL, DVASPECT_CONTENT, -1, TYMED_HGLOBAL };
	STGMEDIUM pMedium;
	CString str;
	
	pFormat.cfFormat = RegisterClipboardFormat( _T("UniformResourceLocator") );
	
	if ( SUCCEEDED( pObject->GetData( &pFormat, &pMedium ) ) && pMedium.hGlobal != NULL )
	{
		if ( LPCSTR psz = (LPCSTR)GlobalLock( pMedium.hGlobal ) )
		{
			str = psz;
			GlobalUnlock( pMedium.hGlobal );
		}
		
		ReleaseStgMedium( &pMedium );
	}
	
	return str;
}

BOOL CMainWnd::XDropTarget::ObjectToFiles(IDataObject* pObject)
{
	FORMATETC pFormat = { CF_HDROP, NULL, DVASPECT_CONTENT, -1, TYMED_HGLOBAL };
	STGMEDIUM pMedium;

	m_pFiles.RemoveAll();
	
	if ( FAILED( pObject->GetData( &pFormat, &pMedium ) ) ) return FALSE;
	if ( pMedium.hGlobal == NULL ) return FALSE;
	
	HDROP	hDropInfo	= (HDROP)pMedium.hGlobal;
	UINT	nCount		= DragQueryFile( hDropInfo, 0xFFFFFFFF, NULL, 0 );
	
	for ( UINT nFile = 0 ; nFile < nCount ; nFile++ )
	{
		TCHAR szFile[MAX_PATH];
		DragQueryFile( hDropInfo, nFile, szFile, MAX_PATH );
		m_pFiles.AddTail( szFile );
	}
	
	ReleaseStgMedium( &pMedium );
	
	return ( m_pFiles.GetCount() > 0 );
}

BOOL CMainWnd::XDropTarget::IsTorrentFile() const
{
	return	m_pFiles.GetCount() == 1 &&
			_tcsistr( m_pFiles.GetHead(), _T(".torrent") ) != NULL;
}

⌨️ 快捷键说明

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