www.gusucode.com > 网络神偷软件VC++源码,远程电脑管理-源码程序 > 网络神偷软件VC++源码,远程电脑管理-源码程序\code\MainFrm.cpp

    //Download by http://www.NewXing.com
// 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;
		}
	}	
}