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

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

?? ctelnetview.cpp

?? BBS 高級程序開發 visual c++ 開發
?? 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一区二区三区免费野_久草精品视频
久久久久久影视| 最新成人av在线| 色综合天天综合给合国产| 精品一区二区久久| 免费一级片91| 麻豆freexxxx性91精品| 日韩高清不卡在线| 午夜久久电影网| 日韩成人一级片| 日韩av中文字幕一区二区| 亚洲成人在线网站| 亚洲18色成人| 伦理电影国产精品| 麻豆免费看一区二区三区| 蜜臀av性久久久久av蜜臀妖精| 五月激情综合婷婷| 久久精品噜噜噜成人88aⅴ| 美女一区二区视频| 国产麻豆精品视频| 不卡免费追剧大全电视剧网站| 不卡的av网站| 欧美在线视频全部完| 欧美精品高清视频| 精品国产免费久久| 国产精品婷婷午夜在线观看| 亚洲视频你懂的| 婷婷中文字幕综合| 久久99精品久久久| 成人av在线一区二区三区| 色8久久人人97超碰香蕉987| 欧美日韩久久不卡| 久久久99免费| 一区二区三区在线播放| 免费人成在线不卡| 国产成人丝袜美腿| 一本到三区不卡视频| 日韩一区二区三区三四区视频在线观看| 欧美一级免费大片| 亚洲色图19p| 蜜桃av噜噜一区| 色综合久久中文综合久久97| 欧美一级精品在线| 亚洲黄一区二区三区| 老司机精品视频线观看86| av电影一区二区| 欧美精品一区二区三区在线播放| 国产精品久久久久天堂| 青青草伊人久久| 91国模大尺度私拍在线视频| 久久久国际精品| 日韩av在线播放中文字幕| 95精品视频在线| 精品国产免费人成电影在线观看四季| 国产精品情趣视频| 精品一区二区免费看| 欧美理论在线播放| 一区二区三区在线播| 懂色av一区二区夜夜嗨| 欧美一区二区三区视频| 亚洲女爱视频在线| caoporn国产精品| 亚洲精品一区二区三区四区高清| 五月天一区二区| 在线视频国内自拍亚洲视频| 国产精品视频免费看| 国产一区福利在线| 91精品欧美福利在线观看| 亚洲综合区在线| 95精品视频在线| 国产精品高潮呻吟| 成人av午夜影院| 中文字幕欧美区| 成人丝袜18视频在线观看| 337p日本欧洲亚洲大胆精品| 青青草91视频| 日韩欧美视频在线| 日本欧美韩国一区三区| 欧美日韩久久不卡| 日韩二区三区四区| 制服丝袜日韩国产| 免费久久精品视频| 日韩区在线观看| 激情综合色播五月| 久久亚洲捆绑美女| 国产91在线观看| 中文字幕一区二区三区在线播放| 成人sese在线| 亚洲激情av在线| 欧美电影在哪看比较好| 日韩成人免费在线| 精品欧美久久久| 福利一区在线观看| 日韩毛片一二三区| 欧美日韩免费观看一区二区三区 | 欧美在线一二三四区| 亚洲精品视频在线看| 欧美另类一区二区三区| 蜜桃久久久久久| 欧美激情综合在线| 日本精品一级二级| 奇米888四色在线精品| 久久久久久久综合色一本| 99国产精品久久久久久久久久| 一区二区三区四区在线播放| 欧美久久免费观看| 国产99精品视频| 亚洲电影在线播放| 久久美女艺术照精彩视频福利播放| 成人免费黄色在线| 午夜天堂影视香蕉久久| 国产性做久久久久久| 在线视频一区二区三| 九一九一国产精品| 亚洲码国产岛国毛片在线| 欧美一级夜夜爽| 成人av网站在线观看| 日本不卡一二三| 中文字幕一区二区在线播放| 欧美一区二区三区日韩| 国产91精品露脸国语对白| 午夜欧美电影在线观看| 中文字幕精品在线不卡| 91精品国产综合久久国产大片| 懂色一区二区三区免费观看 | 欧美四级电影在线观看| 九色|91porny| 亚洲第一搞黄网站| 中文字幕免费不卡| 欧美精品一区二区三区蜜桃| 欧美日韩五月天| 99久久99久久精品免费看蜜桃| 蜜臀久久久99精品久久久久久| 伊人色综合久久天天人手人婷| 久久精品视频一区二区三区| 91麻豆精品久久久久蜜臀| 91日韩在线专区| 成人高清免费观看| 国产乱一区二区| 久久精品999| 日一区二区三区| 亚洲国产中文字幕在线视频综合 | 亚洲综合免费观看高清在线观看| 久久综合久久综合亚洲| 欧美成人猛片aaaaaaa| 欧美在线观看禁18| 99re66热这里只有精品3直播 | 91影视在线播放| 丁香激情综合国产| 国产成人精品免费在线| 极品少妇一区二区| 久久精品99国产精品| 美腿丝袜亚洲一区| 久久99久国产精品黄毛片色诱| 日韩精品亚洲一区二区三区免费| 亚洲大片精品永久免费| 亚洲图片一区二区| 午夜激情一区二区| 三级不卡在线观看| 奇米影视在线99精品| 奇米色一区二区三区四区| 日韩制服丝袜先锋影音| 喷水一区二区三区| 麻豆精品精品国产自在97香蕉| 久久精品久久99精品久久| 国产综合色视频| 粗大黑人巨茎大战欧美成人| 本田岬高潮一区二区三区| 99re8在线精品视频免费播放| 91福利精品视频| 欧美日免费三级在线| 欧美一区二区日韩| 国产欧美综合色| 国产精品三级av在线播放| 亚洲日本欧美天堂| 五月天欧美精品| 国产一区在线精品| 成人黄色大片在线观看| 欧美中文字幕久久| 日韩欧美一区二区免费| 国产嫩草影院久久久久| 亚洲激情网站免费观看| 秋霞电影网一区二区| 国产成都精品91一区二区三| 91亚洲永久精品| 欧美一区二区三区视频在线观看| 久久久国产综合精品女国产盗摄| 亚洲色图19p| 久久成人综合网| 97精品久久久午夜一区二区三区 | 91麻豆精品国产| 国产午夜精品一区二区| 亚洲最大成人网4388xx| 麻豆免费看一区二区三区| 99久久久精品| 91精品国产91久久久久久最新毛片 | 国产成人自拍网| 欧美电影影音先锋| 国产精品灌醉下药二区| 美女在线观看视频一区二区| 91免费国产在线观看|