📄 wndmain.cpp
字号:
{
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 + -