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

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

?? ctelnetview.cpp

?? 遠程服務端控制
?? CPP
字號:
// CTelnetView.cpp : implementation of the CTelnetView class
//

#include "stdafx.h"
#include "CTelnet.h"

#include "CTelnetDoc.h"
#include "CTelnetView.h"
#include "MainFrm.h"
#include "ClientSocket.h"
#include "Process.h"

#include "HostDialog.h"

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

extern CMultiDocTemplate * pDocTemplate;


/////////////////////////////////////////////////////////////////////////////
// CTelnetView

IMPLEMENT_DYNCREATE(CTelnetView, CScrollView)

BEGIN_MESSAGE_MAP(CTelnetView, CScrollView)
	//{{AFX_MSG_MAP(CTelnetView)
	ON_WM_CHAR()
	ON_WM_SIZE()
	ON_WM_ERASEBKGND()
	//}}AFX_MSG_MAP
	// Standard printing commands
	ON_COMMAND(ID_FILE_PRINT, CScrollView::OnFilePrint)
	ON_COMMAND(ID_FILE_PRINT_DIRECT, CScrollView::OnFilePrint)
	ON_COMMAND(ID_FILE_PRINT_PREVIEW, CScrollView::OnFilePrintPreview)
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CTelnetView construction/destruction

CTelnetView::CTelnetView()
{
	cTextColor = RGB(200,200,000);
	cBackgroundColor = RGB(000,000,222);
	cSock = NULL;
	bOptionsSent = FALSE;
	TempCounter = 0;
	cCursX = 0;
	for(int x = 0; x < 80; x++)
	{
		for(int y = 0; y < bufferLines; y++)
		{
			cText[x][y] = ' ';
		}
	}
}

CTelnetView::~CTelnetView()
{
}

BOOL CTelnetView::PreCreateWindow(CREATESTRUCT& cs)
{
	// TODO: Modify the Window class or styles here by modifying
	//  the CREATESTRUCT cs

	return CScrollView::PreCreateWindow(cs);
}

/////////////////////////////////////////////////////////////////////////////
// CTelnetView drawing

void CTelnetView::OnDraw(CDC* pDC)
{
	CTelnetDoc* pDoc = GetDocument();
	ASSERT_VALID(pDoc);

//	pDC->SelectObject(GetStockObject(SYSTEM_FONT));
	pDC->SelectObject(GetStockObject(ANSI_FIXED_FONT));

	DrawCursor(pDC,FALSE);
	DoDraw(pDC);
	DrawCursor(pDC,FALSE);
}

void CTelnetView::DoDraw(CDC* pDC)
{
	CRect clip;
	pDC->GetClipBox(clip);
	clip.top -= dtY;

	pDC->SetTextColor(cTextColor);
	pDC->SetBkColor(cBackgroundColor);

	char text[2] = {0x00, 0x00};

	for(int y = 0; y < bufferLines; y++)
	{
		if(y * dtY >= clip.top)
		{
			for(int x = 0; x < 80; x++)
			{
				text[0] = cText[x][y];
				if(text[0] == ' ')
				{
					pDC->FillSolidRect(CRect(x * dtX, y * dtY, 
						x * dtX + dtX, y * dtY + dtY), 
						cBackgroundColor);
				}
				else
				{
					pDC->TextOut(x * dtX, y * dtY, text);
				}
			}
		}
	}
}

void CTelnetView::OnInitialUpdate()
{
	CScrollView::OnInitialUpdate();
	CSize sizeTotal;
	// TODO: calculate the total size of this view
	sizeTotal.cx = dtX * 80 + 3;
	sizeTotal.cy = dtY * bufferLines + 3;
	SetScrollSizes(MM_TEXT, sizeTotal);

	ScrollToPosition(CPoint(0, bufferLines * 1000)); //go way past the end

	CHostDialog host;
	host.DoModal();
	cHostName = host.m_HostName;

	//create the socket and hook up to the host
	BOOL bOK;
	cSock = new CClientSocket(this);
	if(cSock != NULL)
	{
		bOK = cSock->Create();
		if(bOK == TRUE)
		{
			cSock->AsyncSelect(FD_READ | FD_WRITE | FD_CLOSE | FD_CONNECT | FD_OOB);
			cSock->Connect(cHostName, 23);
			GetDocument()->SetTitle(cHostName);
			Sleep(90);
		}
		else
		{
			ASSERT(FALSE);  //Did you remember to call AfxSocketInit()?
			delete cSock;
			cSock = NULL;
		}
	}
	else
	{
		AfxMessageBox("Could not create new socket",MB_OK);
	}

}

/////////////////////////////////////////////////////////////////////////////
// CTelnetView printing

BOOL CTelnetView::OnPreparePrinting(CPrintInfo* pInfo)
{
	// default preparation
	return DoPreparePrinting(pInfo);
}

void CTelnetView::OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
	// TODO: add extra initialization before printing
}

void CTelnetView::OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
	// TODO: add cleanup after printing
}

/////////////////////////////////////////////////////////////////////////////
// CTelnetView diagnostics

#ifdef _DEBUG
void CTelnetView::AssertValid() const
{
	CScrollView::AssertValid();
}

void CTelnetView::Dump(CDumpContext& dc) const
{
	CScrollView::Dump(dc);
}

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

/////////////////////////////////////////////////////////////////////////////
// CTelnetView message handlers



void CTelnetView::ProcessMessage(CClientSocket * pSock)
{
	if(!IsWindow(m_hWnd)) return;
	if(!IsWindowVisible()) return;
	int nBytes = pSock->Receive(m_bBuf ,ioBuffSize );
	if(nBytes != SOCKET_ERROR)
	{
		int ndx = 0;
		while(GetLine(m_bBuf, nBytes, ndx) != TRUE);
		ProcessOptions();
		MessageReceived(m_strNormalText);
	}
	m_strLine.Empty();
	m_strResp.Empty();
}


void CTelnetView::ProcessOptions()
{
	CString m_strTemp;
	CString m_strOption;
	unsigned char ch;
	int ndx;
	int ldx;
	BOOL bScanDone = FALSE;

	m_strTemp = m_strLine;

	while(!m_strTemp.IsEmpty() && bScanDone != TRUE)
	{
		ndx = m_strTemp.Find(IAC);
		if(ndx != -1)
		{
			m_strNormalText += m_strTemp.Left(ndx);
			ch = m_strTemp.GetAt(ndx + 1);
			switch(ch)
			{
			case DO:
			case DONT:
			case WILL:
			case WONT:
				m_strOption		= m_strTemp.Mid(ndx, 3);
				m_strTemp		= m_strTemp.Mid(ndx + 3);
				m_strNormalText	= m_strTemp.Left(ndx);
				m_ListOptions.AddTail(m_strOption);
				break;
			case IAC:
				m_strNormalText	= m_strTemp.Left(ndx);
				m_strTemp		= m_strTemp.Mid(ndx + 1);
				break;
			case SB:
				m_strNormalText = m_strTemp.Left(ndx);
				ldx = m_strTemp.Find(SE);
				m_strOption		= m_strTemp.Mid(ndx, ldx);
				m_ListOptions.AddTail(m_strOption);
				m_strTemp		= m_strTemp.Mid(ldx);
				AfxMessageBox(m_strOption,MB_OK);
				break;
			}
		}

		else
		{
			m_strNormalText = m_strTemp;
			bScanDone = TRUE;
		}
	} 
	
	RespondToOptions();
}


void CTelnetView::RespondToOptions()
{
	CString strOption;
	
	while(!m_ListOptions.IsEmpty())
	{
		strOption = m_ListOptions.RemoveHead();

		ArrangeReply(strOption);
	}

	DispatchMessage(m_strResp);
	m_strResp.Empty();
}

void CTelnetView::ArrangeReply(CString strOption)
{

	unsigned char Verb;
	unsigned char Option;
	unsigned char Modifier;
	unsigned char ch;
	BOOL bDefined = FALSE;

	if(strOption.GetLength() < 3) return;

	Verb = strOption.GetAt(1);
	Option = strOption.GetAt(2);

	switch(Option)
	{
	case 1:	// Echo
	case 3: // Suppress Go-Ahead
		bDefined = TRUE;
		break;
	}

	m_strResp += IAC;

	if(bDefined == TRUE)
	{
		switch(Verb)
		{
		case DO:
			ch = WILL;
			m_strResp += ch;
			m_strResp += Option;
			break;
		case DONT:
			ch = WONT;
			m_strResp += ch;
			m_strResp += Option;
			break;
		case WILL:
			ch = DO;
			m_strResp += ch;
			m_strResp += Option;
			break;
		case WONT:
			ch = DONT;
			m_strResp += ch;
			m_strResp += Option;
			break;
		case SB:
			Modifier = strOption.GetAt(3);
			if(Modifier == SEND)
			{
				ch = SB;
				m_strResp += ch;
				m_strResp += Option;
				m_strResp += IS;
				m_strResp += IAC;
				m_strResp += SE;
			}
			break;
		}
	}

	else
	{
		switch(Verb)
		{
		case DO:
			ch = WONT;
			m_strResp += ch;
			m_strResp += Option;
			break;
		case DONT:
			ch = WONT;
			m_strResp += ch;
			m_strResp += Option;
			break;
		case WILL:
			ch = DONT;
			m_strResp += ch;
			m_strResp += Option;
			break;
		case WONT:
			ch = DONT;
			m_strResp += ch;
			m_strResp += Option;
			break;
		}
	}
}

//send to the telnet server
void CTelnetView::DispatchMessage(CString strText)
{
	ASSERT(cSock);
	cSock->Send(strText, strText.GetLength());
}

BOOL CTelnetView::GetLine( unsigned char * bytes, int nBytes, int& ndx )
{
	BOOL bLine = FALSE;
	while ( bLine == FALSE && ndx < nBytes )
	{
		unsigned char ch = bytes[ndx];
		
		switch( ch )
		{
		case '\r': // ignore
			m_strLine += "\r\n"; //"CR";
			break;
		case '\n': // end-of-line
//			m_strLine += '\n'; //"LF";
//			bLine = TRUE;
			break;
		default:   // other....
			m_strLine += ch;
			break;
		} 

		ndx ++;

		if (ndx == nBytes)
		{
			bLine = TRUE;
		}
	}
	return bLine;
}

void CTelnetView::MessageReceived(LPCSTR pText)
{
	CDC * pDC = GetDC();
	OnPrepareDC(pDC);
	DrawCursor(pDC,FALSE);
	CMainFrame * frm = (CMainFrame*)GetTopLevelFrame();
	pDC->SetTextColor(cTextColor);
	pDC->SetBkColor(cBackgroundColor);

//	dc.SelectObject(GetStockObject(SYSTEM_FONT));
	pDC->SelectObject(GetStockObject(ANSI_FIXED_FONT));
	int length = strlen(pText);
	char text[2] = {0x00, 0x00};
	for(int loop = 0; loop < length; loop++)
	{
		switch(pText[loop])
		{
		case 8: //Backspace
			cCursX--;
			if(cCursX < 0) cCursX = 0;
			break;
		case 9: //TAB
			cCursX++; //TBD make this smarter
			break;
		case 13: //CR
			cCursX = 0;
			break;
		case 10: //LF
			{
				for(int row = 0; row < bufferLines-1; row++)
				{
					for(int  col = 0; col < 80; col++)
					{
						cText[col][row] = cText[col][row+1];
					}
				}
				for(int  col = 0; col < 80; col++)
				{
					cText[col][bufferLines-1] = ' ';
				}
				DoDraw(pDC);
			}
			break;
		default:
			{
				cText[cCursX][bufferLines-1] = pText[loop];
				text[0] = cText[cCursX][bufferLines-1];
				if(text[0] == ' ')
				{
					pDC->FillSolidRect(CRect(cCursX * dtX, (bufferLines-1) * dtY, 
						cCursX * dtX + dtX, (bufferLines-1) * dtY + dtY), 
						cBackgroundColor);
				}
				else
				{
					pDC->TextOut(cCursX * dtX, (bufferLines-1) * dtY, text);
				}
				cCursX++;
				if(cCursX >= 80)
				{
					for(int row = 0; row < bufferLines-1; row++)
					{
						for(int  col = 0; col < 80; col++)
						{
							cText[col][row] = cText[col][row+1];
						}
					}
					for(int  col = 0; col < 80; col++)
					{
						cText[col][bufferLines-1] = ' ';
					}
					cCursX = 0;
					DoDraw(pDC);
				}
			}
			break;
		}
	}
	DrawCursor(pDC,TRUE);
	ReleaseDC(pDC);
}

void CTelnetView::OnChar(UINT nChar, UINT nRepCnt, UINT nFlags) 
{
	if (nChar == VK_RETURN)
	{
		DispatchMessage("\r\n");
	}
	else
	{
		DispatchMessage(nChar);
	}
}

void CTelnetView::DrawCursor(CDC * pDC, BOOL pDraw)
{
	COLORREF color;
	CMainFrame * frm = (CMainFrame*)GetTopLevelFrame();
	if(pDraw) //draw
	{
		color = cTextColor;
	}
	else //erase
	{
		color = cBackgroundColor;
	}
	CRect rect(cCursX * dtX + 2, (bufferLines-1) * dtY + 1, 
		cCursX * dtX + dtX - 2, (bufferLines-1) * dtY + dtY -1);
	pDC->FillSolidRect(rect, color);
}



void CTelnetView::OnSize(UINT nType, int cx, int cy) 
{
	CScrollView::OnSize(nType, cx, cy);
	if(IsWindow(m_hWnd))
	{
		if(IsWindowVisible())
		{
			ScrollToPosition(CPoint(0, bufferLines * 1000)); //go way past the end
		}
	}
}

BOOL CTelnetView::OnEraseBkgnd(CDC* pDC) 
{
	CRect clip;
	pDC->GetClipBox(clip);
	CMainFrame * frm = (CMainFrame*)GetTopLevelFrame();
	pDC->FillSolidRect(clip,cBackgroundColor);
	return TRUE;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产一区二区0| 欧美色老头old∨ideo| 欧美在线综合视频| 国产亚洲欧洲一区高清在线观看| 亚洲人xxxx| 国内精品国产成人| 欧美性感一区二区三区| 亚洲欧洲日韩在线| 国产一区91精品张津瑜| 91精品国产综合久久久久久久| 亚洲欧洲成人av每日更新| 韩国女主播一区| 欧美一区二区成人6969| 亚洲影视资源网| 波多野结衣一区二区三区| 日韩三级.com| 亚洲精品免费电影| 成人午夜免费视频| 久久嫩草精品久久久久| 久久99久久99| 欧美成人精品高清在线播放| 五月天中文字幕一区二区| 色8久久人人97超碰香蕉987| 国产日韩三级在线| 国产精品一区二区在线观看不卡| 欧美成人性战久久| 狠狠色综合播放一区二区| 日韩一卡二卡三卡国产欧美| 天天亚洲美女在线视频| 欧美区一区二区三区| 亚洲成人一二三| 欧美另类久久久品| 日韩中文欧美在线| 日韩欧美专区在线| 精品在线免费视频| 久久一区二区视频| 成人精品视频一区| 中文字幕佐山爱一区二区免费| 99国产精品久| 一区二区三区中文字幕精品精品| 色激情天天射综合网| 亚洲国产欧美一区二区三区丁香婷| 欧美性大战久久| 日本91福利区| 久久久精品黄色| 成人激情免费网站| 一区二区三区在线看| 欧美色综合网站| 日产国产欧美视频一区精品 | 日本强好片久久久久久aaa| 91麻豆精品国产自产在线观看一区| 首页欧美精品中文字幕| 精品国产乱码久久久久久夜甘婷婷| 精品一区二区影视| 国产精品理伦片| 欧美视频一二三区| 韩国欧美国产一区| 伊人夜夜躁av伊人久久| 欧美喷潮久久久xxxxx| 国产呦萝稀缺另类资源| 亚洲色图欧美激情| 这里只有精品视频在线观看| 国产精品一卡二卡在线观看| 亚洲男人天堂av网| 精品国产一区二区三区久久影院 | 91激情在线视频| 日本视频免费一区| 国产精品国产自产拍高清av| 欧美日韩黄色影视| 国产福利视频一区二区三区| 一区二区三区欧美| 久久久夜色精品亚洲| 色综合久久天天综合网| 麻豆精品视频在线观看免费| 成人欧美一区二区三区小说| 91精品久久久久久久91蜜桃| 99久久亚洲一区二区三区青草| 久久精品国产亚洲aⅴ| 亚洲私人黄色宅男| 欧美精品一区二区蜜臀亚洲| 色视频一区二区| 国产成人久久精品77777最新版本| 亚洲一区在线视频| 国产欧美日韩激情| 欧美成人一级视频| 在线成人高清不卡| 97精品久久久午夜一区二区三区 | 99久久99久久免费精品蜜臀| 日本中文字幕一区二区视频 | 国产aⅴ综合色| 美国十次了思思久久精品导航| 亚洲视频在线一区| 欧美激情一区二区在线| 日韩免费性生活视频播放| 91网页版在线| 99久久伊人精品| 国产精品69久久久久水密桃| 免费观看一级特黄欧美大片| 国产精品久线观看视频| 欧美成人艳星乳罩| 日韩一级片网站| 在线播放91灌醉迷j高跟美女 | 777色狠狠一区二区三区| 99riav一区二区三区| 国产成人av网站| 国产精品自拍一区| 国产自产v一区二区三区c| 蜜臀久久99精品久久久久久9| 香蕉av福利精品导航| 亚洲摸摸操操av| 亚洲乱码日产精品bd| 亚洲图片激情小说| 18欧美亚洲精品| 亚洲欧洲成人自拍| 亚洲人被黑人高潮完整版| 亚洲女同一区二区| 一区二区三区av电影| 樱花影视一区二区| 亚洲18影院在线观看| 日韩电影在线观看一区| 欧美aⅴ一区二区三区视频| 日本一道高清亚洲日美韩| 天天影视色香欲综合网老头| 日本亚洲三级在线| 久久99国产精品久久| 韩国三级电影一区二区| 国产成人综合精品三级| 国产精品一区二区三区乱码| 国产91丝袜在线观看| av在线播放不卡| 日本久久一区二区三区| 欧洲亚洲国产日韩| 欧美精品久久99久久在免费线| 678五月天丁香亚洲综合网| 日韩欧美一区二区三区在线| 精品国产1区二区| 亚洲国产成人在线| 1区2区3区精品视频| 午夜不卡在线视频| 国产一区二区看久久| 99久久免费精品| 欧美电影在哪看比较好| 久久久亚洲精华液精华液精华液| 国产精品久久久久影院色老大| 亚洲猫色日本管| 日本美女一区二区| 成人一区二区三区视频在线观看| 色综合久久久久网| 欧美高清激情brazzers| 久久久影院官网| 亚洲精品国产高清久久伦理二区| 日韩电影在线一区| 成人一区二区三区在线观看| 欧美日韩亚洲高清一区二区| 久久美女艺术照精彩视频福利播放| 中文字幕一区不卡| 免费在线观看视频一区| 不卡av在线网| 欧美一卡2卡三卡4卡5免费| 国产精品美女久久福利网站| 日韩精品国产欧美| 成人精品国产免费网站| 538在线一区二区精品国产| 欧美高清一级片在线观看| 午夜精品久久久久影视| 成人av电影在线网| 日韩一级视频免费观看在线| 亚洲视频免费在线| 国产成人亚洲综合a∨婷婷图片| 91国偷自产一区二区使用方法| xnxx国产精品| 天天色 色综合| 99re亚洲国产精品| 久久综合999| 美女一区二区视频| 欧美日韩国产一区二区三区地区| 国产精品青草久久| 国产精品一线二线三线精华| 91精品婷婷国产综合久久竹菊| 中文字幕日韩一区二区| 国产一区二区电影| 日韩三级精品电影久久久| 亚洲高清免费在线| 91精品91久久久中77777| 亚洲欧洲三级电影| 成人a级免费电影| 国产午夜精品一区二区三区嫩草| 蜜桃av一区二区| 欧美日韩不卡在线| 亚洲综合视频在线| 在线视频欧美区| 一区二区在线免费观看| 99久久综合99久久综合网站| 欧美激情综合在线| 国产成人午夜高潮毛片| 久久噜噜亚洲综合| 国产成人av电影在线观看| 久久先锋影音av鲁色资源网| 国产精品一区二区91| 久久一区二区视频|