codeconvert.cpp

来自「vt100终端仿真程序」· C++ 代码 · 共 88 行

CPP
88
字号
// CodeConvert.cpp: implementation of the CCodeConvert class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "vt100.h"
#include "CodeConvert.h"

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

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

CCodeConvert::CCodeConvert()
{
	FILE *hFile;
	WORD wUnicode;
	int iRow,iCol;

	if((hFile=fopen("\\disk\\unicode.dat","rb"))==NULL){
		MessageBox(NULL,_T("can't open data file"),_T(""),MB_OK);
		return ;
	}

	memset(&wUnicodeTab,161,sizeof(wUnicodeTab));

	for(iRow=0;iRow<87;iRow++){
		for(iCol=0;iCol<94;iCol++){
			if(!feof(hFile)){
				fread(&wUnicode,2,1,hFile);
				wUnicodeTab[iRow][iCol]=wUnicode;
			}
			else{
				iRow=999;
				break;
			}
		}
	}

	fclose(hFile);
	
}

CCodeConvert::~CCodeConvert()
{
}

int CCodeConvert::MakeUnicodeTable()
{
	FILE *hFile;
	WORD wGB,wUnicode;
	int iRow,iCol;

	if((hFile=fopen("\\disk\\unicode.dat","wb"))==NULL){
		MessageBox(NULL,_T("can't open data file"),_T(""),MB_OK);
		return 1;
	}

	for(iRow=0;iRow<87;iRow++){
		for(iCol=0;iCol<94;iCol++){
			wGB=MAKEWORD(iRow+0xa1,iCol+0xa1);
			MultiByteToWideChar(CP_ACP,MB_PRECOMPOSED,(LPCSTR)&wGB,2,&wUnicode,1);
			fwrite(&wUnicode,2,1,hFile);
		}
	}

	fclose(hFile);

	return 0;
}

int CCodeConvert::GBToUnicode(WORD wGB, WORD *pwUnicode)
{
	int iRow,iCol;

	iCol=HIBYTE(wGB)-0xa1;
	iRow=LOBYTE(wGB)-0xa1;
	
	*pwUnicode=wUnicodeTab[iRow][iCol];	
	
	return 0;
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?