亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? machineview.cpp

?? <Visual C++ 網絡程序設計實例詳解>配套源碼
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
// MachineView.cpp : implementation of the CMachineView class
//

#include "stdafx.h"
#include "RemoteAdmin.h"
#include "GlobalMFCHelperFunc.h"
#include "GlobalHelperFunc.h"
#include "RemoteAdminDoc.h"
#include "MachineView.h"
#include "MainFrame.h"
#include "RemoteLogonDlg.h"
#include "MachineInfo.h"
#include "RemoteAdminView.h"
#include "RemoteProcessDlg.h"
#include "ProgressWndThread.h"
#include "Command.h"
#include "ConnectionThread.h"
#include <process.h>
#include <Tlhelp32.h>
#include <windows.h>

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif


/////////////////////////////////////////////////////////////////////////////
// CMachineView

IMPLEMENT_DYNCREATE(CMachineView, CTreeView)

BEGIN_MESSAGE_MAP(CMachineView, CTreeView)
	//{{AFX_MSG_MAP(CMachineView)
	ON_WM_RBUTTONDOWN()
	ON_COMMAND(ID_MACHINEPROPERTIES_REFRESHPROCESS, OnRefreshProcess)
	ON_WM_LBUTTONDOWN()
	ON_COMMAND(ID_MACHINEPROPERTIES_EXECUTE_PROCESS, OnExecuteProcess)
	ON_COMMAND(ID_MACHINEPROPERTIES_SHUTDOWN_HALT, OnShutdownHalt)
    ON_COMMAND(ID_MACHINEOPTIONS_ADD_MACHINE, OnAddMachine)
	ON_COMMAND(ID_MACHINEOPTIONS_DELETE_MACHINE, OnDeleteMachine)
	ON_COMMAND(ID_MACHINEPROPERTIES_DELETE_MACHINE, OnDeleteMachine)
	ON_COMMAND(ID_MACHINEPROPERTIES_SHUTDOWN_ABORTSHUTDOWN, OnShutdownAbort)
    ON_COMMAND(ID_MACHINEPROPERTIES_SHUTDOWN_REBOOT, OnShutdownReboot)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CMachineView construction/destruction

CMachineView::CMachineView()
{
	// TODO: add construction code here

}

CMachineView::~CMachineView()
{
}

BOOL CMachineView::PreCreateWindow(CREATESTRUCT& cs)
{
	cs.style |= TVS_HASLINES | 
                TVS_LINESATROOT | 
                TVS_HASBUTTONS | 
                TVS_SHOWSELALWAYS;

	return CTreeView::PreCreateWindow(cs);
}

/////////////////////////////////////////////////////////////////////////////
// CMachineView drawing

void CMachineView::OnDraw(CDC* pDC)
{
	CRemoteAdminDoc* pDoc = GetDocument();
	ASSERT_VALID(pDoc);

	// TODO: add draw code for native data here
}


void CMachineView::OnInitialUpdate()
{
	CTreeView::OnInitialUpdate();
    
    // When being reused, reset the image list
    ImageList_Destroy(m_ilMachine.Detach());
    // When being reused, clean the tree control(view)
    GetTreeCtrl().DeleteAllItems();

	CreateEmptyTree();
    GetTreeCtrl().SetIndent(5);
}

/////////////////////////////////////////////////////////////////////////////
// CMachineView diagnostics

#ifdef _DEBUG
void CMachineView::AssertValid() const
{
	CTreeView::AssertValid();
}

void CMachineView::Dump(CDumpContext& dc) const
{
	CTreeView::Dump(dc);
}

CRemoteAdminDoc* CMachineView::GetDocument() // non-debug version is inline
{
	ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CRemoteAdminDoc)));
	return (CRemoteAdminDoc*)m_pDocument;
}
#endif //_DEBUG

void CMachineView::CreateEmptyTree()
{
    CreateImageList();
    CreateTreeRoot();
}

void CMachineView::CreateImageList()
{
    // Load various icons required for the machine view
    HICON hIconMachineOnNetwork = ::AfxGetApp()->LoadIcon(MAKEINTRESOURCE(IDI_MACHINE_ON_NETWORK));
    HICON hIconMachine  = ::AfxGetApp()->LoadIcon(MAKEINTRESOURCE(IDI_MACHINE));
        
    // The imageslist is created
    m_ilMachine.Create(20, 20, ILC_COLOR32 | ILC_MASK, 0, 1);

    // Add the icons in the imagelist
    m_ilMachine.Add(hIconMachineOnNetwork);
    m_ilMachine.Add(hIconMachine);

    // Add the imagelist to the tree control
    GetTreeCtrl().SetImageList(&m_ilMachine, TVSIL_NORMAL);
}

void CMachineView::CreateTreeRoot()
{
    CTreeCtrl& ptcVehicleView = GetTreeCtrl();
    TVINSERTSTRUCT tviHelper    = {0};
    CString str;
    
    //------------------------------------
    // Create the root of the vehicle view
    //------------------------------------
    tviHelper.hParent			  = TVI_ROOT;
	tviHelper.hInsertAfter		  = TVI_FIRST;
	tviHelper.item.mask			  = TVIF_TEXT |
                                    TVIF_IMAGE | 
                                    TVIF_SELECTEDIMAGE | 
                                    TVIF_PARAM;
    str.LoadString(IDS_MONITORED_MACHINES);
    tviHelper.item.pszText		  = str.GetBuffer(0);
	tviHelper.item.iImage		  = MACHINE_IMAGE_ON_NETWORK;
	tviHelper.item.iSelectedImage = MACHINE_IMAGE_ON_NETWORK;
	tviHelper.item.lParam		  = 0;
	
    m_hMachineViewRoot = ptcVehicleView.InsertItem(&tviHelper);
}

void CMachineView::OnRButtonDown(UINT nFlags, CPoint point) 
{
    CTreeView::OnLButtonDown(nFlags, point);
    
	HTREEITEM hTreeItem;
    CMenu menuContext;
    CPoint t_point;
    CRect t_Rect;
    TVITEM tvItem;
    TCHAR szText[_MAX_PATH] = _T("");
    tvItem.pszText = szText;

    t_point = point;
    SetFocus(); 
    
    hTreeItem = GetTreeCtrl().HitTest(t_point, &nFlags); // See if any item has been it?
    if(hTreeItem != NULL)
    {/*
        CString strIP = GetSelectedItemTextInTreeView();

        if (strIP != _T(""))
        {
            if (strIP == _T("0"))
            {
                ::GetRemoteAdminView()->GetListCtrl().DeleteAllItems();
            }
            else 
            {
                RefreshProcesses(strIP);
            }
        }*/
        // Check if the item clicked was not the root, it's associated LPARAM
        // value is zero.
        tvItem.hItem = hTreeItem;
        tvItem.mask = TVIF_PARAM | TVIF_HANDLE;

        GetTreeCtrl().GetItem(&tvItem);

        if (tvItem.lParam == 0) 
        {
            BOOL bResult = GetTreeCtrl().GetItemRect(hTreeItem, &t_Rect, TRUE);
            
            if(t_Rect.PtInRect(t_point))
            {
                GetTreeCtrl().SelectItem(hTreeItem);
                ClientToScreen(&t_point);
                MFC_DocView::GetRemoteAdminView()->GetListCtrl().DeleteAllItems();    
                menuContext.LoadMenu(IDR_MACHINE_OPTIONS);
                CMenu* pMenu = menuContext.GetSubMenu(0);
                pMenu->TrackPopupMenu(TPM_LEFTALIGN, t_point.x, t_point.y, this);
            }
        }
        else
        {   
            CString strIP = GetTreeCtrl().GetItemText(hTreeItem);
                       
            BOOL bResult = GetTreeCtrl().GetItemRect(hTreeItem, &t_Rect, TRUE);
            
            if(t_Rect.PtInRect(t_point))
            {
                GetTreeCtrl().SelectItem(hTreeItem);
                ClientToScreen(&t_point);
                
                // Refress the process when even right clicked
                RefreshProcesses(strIP);
                
                menuContext.LoadMenu(IDR_MACHINE_PROPERTIES);
                CMenu* pMenu = menuContext.GetSubMenu(0);
                pMenu->TrackPopupMenu(TPM_LEFTALIGN, t_point.x, t_point.y, this);
            }
        }
    }
    

}

void CMachineView::OnAddMachine()
{
    CRemoteLogonDlg dlgRemoteLogon;
    
    if (dlgRemoteLogon.DoModal() == IDOK)
    {
        BOOL bAddMachineSuccess = AddMachine(dlgRemoteLogon.m_strRemoteIP, dlgRemoteLogon.m_strPassword, GetDocument(), MFC_DocView::GetRemoteAdminView());   

		// Show visual progress, if successful
		if (bAddMachineSuccess)
		{
			MFC_DocView::GetAppDocument()->CreateVisualThread();
		}
    }
}


BOOL CMachineView::AddMachine(CString strIP, CString strPassword, CRemoteAdminDoc* pRemoteAdminDoc, CRemoteAdminView* pRemoteAdminView)
{
	if (GetDocument()->CheckIfMachinePresent(strIP) == FALSE)
    {
		SConnectInfo* pConnectInfo     = new SConnectInfo;
        pConnectInfo->pDoc             = pRemoteAdminDoc;
        pConnectInfo->pMachineView     = this;
        pConnectInfo->pRemoteAdminView = pRemoteAdminView;
        pConnectInfo->strIP            = strIP;
        pConnectInfo->strPwd           = strPassword;
            
        unsigned threadID = 0;
            
        // Check if a thread is not processing a machine
        if (pRemoteAdminDoc->IsConnectionPending(strIP) == FALSE)
        {
			::_beginthreadex(NULL, 0, ThreadConnection::ConnectToMachine, pConnectInfo, 0, &threadID);

			return TRUE;
        }
        else
        {
            CString strFormattedErrorMsg = ErrorHandling::ConvertStringTableIDToErrorMsg(strIP, IDS_CONNECTION_PENDING);
            ::AfxMessageBox(strFormattedErrorMsg);
        }
    }
    else
    {
        CString strFormattedErrorMsg = ErrorHandling::ConvertStringTableIDToErrorMsg(strIP, IDS_MACHINE_ALREADY_PRESENT);
        ::AfxMessageBox(strFormattedErrorMsg);
    }

	return FALSE;
        
}


void CMachineView::OnDeleteMachine()
{
	TCHAR szText[_MAX_PATH] = _T("");
    TVITEM tvItem = {0};
    HTREEITEM hMachineToBeDeleted = GetTreeCtrl().GetSelectedItem();

    /*tvItem.hItem   = hMachineToBeDeleted;
	tvItem.pszText = szText;
    tvItem.mask    = TVIF_PARAM | TVIF_HANDLE | TVIF_TEXT;
    GetTreeCtrl().GetItem(&tvItem);
	GetTreeCtrl().GetItemText(hMachineToBeDeleted);

    CMachineInfo* pMachineInfo = reinterpret_cast<CMachineInfo*>(tvItem.lParam);*/

	CString strIP = GetTreeCtrl().GetItemText(hMachineToBeDeleted);
	DeleteMachineFromBeingMonitored(strIP, MFC_DocView::GetRemoteAdminView());
}    
 

void CMachineView::DeleteMachineFromBeingMonitored(CString strIP, CRemoteAdminView* pRemoteAdminView)
{
    // Disconnects the machine and frees the machine info from the internal list
    GetDocument()->DeleteAndDisconnectMachine(strIP);

	// Get the HTREEITEM for the IP
	HTREEITEM hMachineToBeDeleted = GetTreeItemForText(strIP);

    // Remove from machine from the tree
    DeleteMachineFromTree(hMachineToBeDeleted);

    // Clear the processes in the list view
    //::GetRemoteAdminView()->GetListCtrl().DeleteAllItems();
	pRemoteAdminView->GetListCtrl().DeleteAllItems();

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
韩国av一区二区三区四区| 国产欧美日韩三级| 99久久精品免费看国产免费软件| 青青草国产精品亚洲专区无| 亚洲综合无码一区二区| 亚洲黄色尤物视频| 亚洲一区在线观看网站| 亚洲1区2区3区4区| 日本va欧美va精品| 国产在线国偷精品免费看| 国产精品伊人色| 成人毛片在线观看| 色久优优欧美色久优优| 欧美亚洲免费在线一区| 在线成人免费观看| 久久亚洲精精品中文字幕早川悠里| 精品国产一区二区三区久久久蜜月 | 日韩精品在线一区| 欧美一区二区三区免费大片 | 蜜桃在线一区二区三区| 久久精品国产精品亚洲红杏| 国产精品中文字幕一区二区三区| 成人一区二区三区| 在线观看欧美日本| 在线成人高清不卡| 国产欧美1区2区3区| 国产日本亚洲高清| 亚洲欧美视频在线观看| 五月激情综合网| 黄网站免费久久| 一本一道波多野结衣一区二区| 欧美日韩成人综合在线一区二区| 精品欧美乱码久久久久久| 国产精品免费aⅴ片在线观看| 伊人性伊人情综合网| 日本成人在线看| 99久久精品99国产精品| 欧美精品乱码久久久久久| 欧美国产成人精品| 亚洲成av人片在线观看| 国产成人精品影视| 91精品国产黑色紧身裤美女| 国产精品视频一区二区三区不卡| 亚洲国产人成综合网站| 国产成人免费xxxxxxxx| 欧美一区二区三区免费视频 | 欧美日韩成人综合| 国产精品久久久久久久蜜臀| 日韩av在线播放中文字幕| av影院午夜一区| 日韩美女一区二区三区四区| 一区二区三区欧美激情| 福利一区二区在线观看| 欧美α欧美αv大片| 亚洲国产精品久久人人爱 | 国产精品拍天天在线| 无码av免费一区二区三区试看 | 欧美激情一区二区| 欧美aaaaa成人免费观看视频| 97久久人人超碰| 欧美韩日一区二区三区四区| 韩国av一区二区三区在线观看| 欧美精品在线观看一区二区| 亚洲精品精品亚洲| 91视频在线观看免费| 欧美国产一区二区| 国产成人av影院| 国产欧美日韩亚州综合| 国产精品白丝jk黑袜喷水| 精品日韩一区二区三区免费视频| 亚洲成人一区二区| 欧美日韩精品一区二区三区蜜桃| 亚洲宅男天堂在线观看无病毒| 色婷婷亚洲综合| 一区二区三区在线观看欧美| 色婷婷亚洲精品| 一区二区三区视频在线观看| 91蜜桃网址入口| 亚洲柠檬福利资源导航| 91丨九色porny丨蝌蚪| 一区二区成人在线观看| 欧美理论在线播放| 日本不卡视频一二三区| 日韩欧美国产综合一区| 激情综合色播激情啊| 久久嫩草精品久久久久| 粉嫩高潮美女一区二区三区| 国产精品高潮久久久久无| av成人免费在线观看| 亚洲欧美日韩精品久久久久| 欧美写真视频网站| 美女性感视频久久| 久久久国产综合精品女国产盗摄| 国产福利一区在线| 亚洲欧美另类在线| 欧美日韩国产色站一区二区三区| 日韩精品高清不卡| 正在播放一区二区| 国产一区二区三区观看| 中文字幕亚洲一区二区av在线| 日本高清无吗v一区| 天天操天天干天天综合网| 精品久久一区二区三区| 成人毛片老司机大片| 亚洲mv在线观看| 精品国产免费一区二区三区香蕉| 国产69精品一区二区亚洲孕妇| 亚洲婷婷综合色高清在线| 91麻豆精品91久久久久同性| 精品一区免费av| 最新中文字幕一区二区三区| 91久久精品日日躁夜夜躁欧美| 日韩主播视频在线| 国产精品三级视频| 91精品黄色片免费大全| 成人高清在线视频| 日本vs亚洲vs韩国一区三区二区| 国产精品天美传媒| 日韩欧美一区二区在线视频| 成人午夜激情影院| 免费精品99久久国产综合精品| 国产精品久久久久久户外露出| 欧美日韩成人综合在线一区二区| 国产成a人无v码亚洲福利| 天天色 色综合| 成人免费一区二区三区在线观看| 欧美一级精品大片| 欧美日韩亚洲综合| 91网站视频在线观看| 国产一区二区三区免费| 日韩不卡手机在线v区| 一区二区三区资源| 中文字幕一区二区三区精华液 | 国产午夜精品一区二区 | 亚洲精品成人天堂一二三| 国产成人超碰人人澡人人澡| 国产精品欧美极品| 日韩视频123| av一区二区不卡| 男男视频亚洲欧美| 天堂av在线一区| 欧美电影免费观看高清完整版在线观看| 成人蜜臀av电影| 国产高清在线观看免费不卡| 午夜精品一区二区三区免费视频| 成人欧美一区二区三区视频网页| 91精品国产色综合久久久蜜香臀| 99久久精品一区| 粉嫩欧美一区二区三区高清影视| 蜜臀久久久久久久| 日韩精品久久久久久| 亚洲综合激情另类小说区| 最新日韩av在线| 亚洲天堂精品视频| 欧美韩国一区二区| 久久蜜桃一区二区| 26uuu国产日韩综合| 精品卡一卡二卡三卡四在线| 91精品国产欧美日韩| 日韩三区在线观看| 日韩欧美国产系列| 精品国产一区二区精华| 2欧美一区二区三区在线观看视频| 777色狠狠一区二区三区| 欧美日韩大陆一区二区| 91麻豆精品国产91久久久使用方法| 日本韩国欧美在线| 欧美日韩中文字幕一区二区| 欧美视频一区在线观看| 777午夜精品视频在线播放| 91精品在线麻豆| 日韩美女主播在线视频一区二区三区| 精品日韩一区二区三区免费视频| 欧美精品日韩一区| 91麻豆精品国产91久久久| 日韩欧美一二区| 国产精品免费视频一区| 最新久久zyz资源站| 亚洲一级在线观看| 麻豆精品久久精品色综合| 精品一区二区免费在线观看| 国产高清在线观看免费不卡| av网站免费线看精品| 欧美日韩一区成人| 久久精品视频一区二区三区| 一区二区在线观看不卡| 强制捆绑调教一区二区| 国产成人在线视频免费播放| 91在线视频在线| 欧美一级一区二区| 成人欧美一区二区三区1314| 日本网站在线观看一区二区三区| 国产激情视频一区二区三区欧美 | 成人午夜电影久久影院| 欧美丝袜丝交足nylons图片| 久久综合久久综合九色| 亚洲一区二区三区三| 成人免费精品视频| 日韩一区二区在线播放| 亚洲综合色婷婷|