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

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

?? ctelnetview.cpp

?? bbs高級程序開發
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
// 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()
	ON_WM_KEYDOWN()

	//}}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)
	ON_COMMAND(ID_FILE_NEW, OnFileNew)

END_MESSAGE_MAP()

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

CTelnetView::CTelnetView()
{
	cTextColor = RGB(0,200,000);
	cBackgroundColor = RGB(000,000,000);
	cSock = NULL;
	bOptionsSent = FALSE;
	TempCounter = 0;
	cCursX = 0;
	CurrentXX=0;
	CurrentYY=0;

	IfOutput=false;
//	OffsetNum=0;
	for(int x = 0; x < 80; x++)
	{
		for(int y = 0; y < bufferLines; y++)
		{
			cText[x][y] = ' ';
		}
	}
}

CTelnetView::~CTelnetView()
{
	if(cSock != NULL)
		delete cSock;
	cSock = NULL;
}

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(ANSI_FIXED_FONT));

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

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

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

//	CurrentXX=0;
	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] == 27)
					bSkip = TRUE;
				if(!bSkip)
					strLine += text[0];
				if(text[0] == 'm' && bSkip)
					bSkip = FALSE;
			}
			pDC->TextOut(0, y * dtY, strLine);
			strLine.Empty();
		//}
	}
}

void CTelnetView::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);
	//SetWindowPos(NULL,0,0,sizeTotal.cx,sizeTotal.cy,SWP_NOMOVE);

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


	CScrollView::OnInitialUpdate();

}

/////////////////////////////////////////////////////////////////////////////
// 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;
	//保存數據到m_bBuf
	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 = Find(m_strTemp, 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;
			default:
				bScanDone = TRUE;
			}
		}
		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:	//回顯
	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;
		}
	}
}

//發送數據
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': // 
			m_strLine += "\r"; //回車
			break;
		case '\n': // 行結尾
			m_strLine += "\n";
			break;
		default:   // 其他數據

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品99久久久久| 欧美大片一区二区三区| 99re热这里只有精品视频| 国产精一品亚洲二区在线视频| 国模娜娜一区二区三区| 国精产品一区一区三区mba视频| 另类欧美日韩国产在线| 久久精品国产77777蜜臀| 久久99精品国产.久久久久| 黄页视频在线91| 国产精品一区二区免费不卡| 国产不卡一区视频| 成人高清视频在线观看| 91小视频在线| 欧美色精品在线视频| 制服丝袜亚洲播放| 日韩精品一区二区三区视频播放| 精品国产99国产精品| 久久久欧美精品sm网站| 国产精品久久毛片av大全日韩| 国产精品乱人伦中文| 亚洲激情成人在线| 日韩成人一级大片| 国产一区 二区| 99久久久久久| 欧美伦理影视网| 精品国产一区二区三区四区四| 国产偷国产偷精品高清尤物| 亚洲视频免费在线观看| 偷窥少妇高潮呻吟av久久免费| 青青草原综合久久大伊人精品优势| 久久国产欧美日韩精品| 成人黄色电影在线| 欧美亚洲国产怡红院影院| 日韩免费在线观看| 国产精品国产三级国产a| 亚洲成人精品影院| 精油按摩中文字幕久久| 91在线精品一区二区| 欧美日本高清视频在线观看| 久久你懂得1024| 亚洲欧美日韩国产一区二区三区| 日韩在线a电影| 国产不卡视频一区二区三区| 欧美亚洲一区二区在线| 欧美精品一区二区精品网| 亚洲人吸女人奶水| 极品少妇xxxx精品少妇偷拍| 99久久精品国产麻豆演员表| 制服丝袜在线91| 国产精品黄色在线观看| 蜜臀va亚洲va欧美va天堂| 成人国产精品免费观看| 欧美一二三四在线| 亚洲欧洲99久久| 久久99久久久欧美国产| 日本久久一区二区三区| 久久尤物电影视频在线观看| 1区2区3区国产精品| 黄网站免费久久| 欧美三级视频在线观看| 日本一区二区三区免费乱视频| 性做久久久久久免费观看| 高清视频一区二区| 日韩欧美国产综合在线一区二区三区| 中文字幕精品在线不卡| 美女看a上一区| 欧美色国产精品| 亚洲人成网站精品片在线观看| 激情图区综合网| 3atv一区二区三区| 亚洲一区在线观看免费| av在线免费不卡| 久久精品亚洲国产奇米99| 五月天亚洲婷婷| 色视频成人在线观看免| 中文一区二区在线观看| 国模一区二区三区白浆| 欧美一卡在线观看| 性做久久久久久免费观看| 91免费看`日韩一区二区| 国产欧美视频一区二区三区| 久久精品99国产精品日本| 欧美精选一区二区| 亚洲一区二区三区视频在线| 91天堂素人约啪| 国产精品国产a| 成人永久aaa| 国产欧美日韩久久| 欧美日韩综合不卡| 一区二区三区精品视频| 99国产精品国产精品毛片| 欧美国产成人精品| 福利91精品一区二区三区| 久久亚洲精品小早川怜子| 精品一区二区三区的国产在线播放| 欧美精选午夜久久久乱码6080| 亚洲一区二区三区四区不卡| 在线免费不卡电影| 一区二区三区精品在线观看| 在线免费观看不卡av| 一区二区三区四区激情| 在线一区二区三区四区| 一区二区欧美在线观看| 欧洲精品视频在线观看| 亚洲一区二区成人在线观看| 欧美视频自拍偷拍| 五月天国产精品| 欧美日韩精品欧美日韩精品| 亚洲成av人片在线观看| 欧美精品久久99久久在免费线 | 日韩欧美国产三级电影视频| 天天av天天翘天天综合网| 7777精品伊人久久久大香线蕉的| 亚州成人在线电影| 日韩欧美专区在线| 国内精品国产成人| 中文在线资源观看网站视频免费不卡| 顶级嫩模精品视频在线看| 国产精品电影一区二区| 91九色02白丝porn| 婷婷亚洲久悠悠色悠在线播放| 欧美一区二区三区四区高清| 精一区二区三区| 国产精品免费av| 在线精品视频一区二区| 日韩成人免费电影| 久久综合一区二区| 成人a免费在线看| 夜夜夜精品看看| 日韩欧美自拍偷拍| 成人深夜福利app| 一区二区免费在线播放| 日韩一区二区在线观看视频播放| 国产一区在线精品| 亚洲日本在线视频观看| 欧美高清视频在线高清观看mv色露露十八 | 欧美天天综合网| 免费成人你懂的| 国产精品久久久久久久久免费丝袜| 99久久免费视频.com| 亚洲成va人在线观看| 欧美sm极限捆绑bd| 91视频在线观看免费| 日韩精品一二三区| 日本一区二区三区电影| 欧美色综合久久| 欧美精品在欧美一区二区少妇| 久久99精品久久久久久久久久久久 | 欧美人xxxx| 国产精品一区免费视频| 亚洲男人电影天堂| 日韩精品一区二区三区在线观看| 成人av电影在线网| 青椒成人免费视频| **性色生活片久久毛片| 日韩欧美久久久| 色88888久久久久久影院野外| 久久99国产精品久久| 亚洲美女偷拍久久| 久久色视频免费观看| 欧美日韩综合在线免费观看| 国产成人av电影在线播放| 亚洲国产婷婷综合在线精品| 久久精品欧美日韩| 欧美精品亚洲一区二区在线播放| 国产一区二区在线视频| 午夜一区二区三区视频| 国产精品全国免费观看高清| 欧美一区二区三区思思人| 色欧美片视频在线观看| 国产精品 欧美精品| 蜜桃视频一区二区| 一区二区不卡在线播放 | 亚洲一区二区三区中文字幕在线 | 麻豆专区一区二区三区四区五区| 亚洲欧洲综合另类| 国产日韩亚洲欧美综合| 欧美成人一区二区三区| 精品视频123区在线观看| 99综合电影在线视频| 国产精品一区久久久久| 男女男精品视频| 亚洲成人精品一区| 亚洲精品国产精品乱码不99| 国产精品网友自拍| 久久先锋影音av| 日韩免费看的电影| 欧美一区二区三区公司| 欧美丝袜丝交足nylons| 91丨porny丨国产入口| 成人小视频在线| 国产盗摄女厕一区二区三区| 黑人精品欧美一区二区蜜桃| 日韩国产欧美在线播放| 亚洲成人免费观看| 午夜欧美2019年伦理| 亚洲成年人影院| 亚洲777理论| 日日欢夜夜爽一区|