⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 uni_char.cpp

📁 决战帝王1.5武神降临对喜爱决战的玩家共享研究用
💻 CPP
字号:
// UNI_CHAR.cpp: implementation of the UNI_CHAR class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "UNI_CHAR.h"

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

// UNI_CHAR.cpp: implementation of the UNI_CHAR class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "UNI_CHAR.h"

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

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


//char* UNI_CHAR::UniCodeC[19];

//char* UNI_CHAR::UniCodeV[21];
//char* UNI_CHAR::UniCodeJ[28];


char *UNI_CHAR::UniCodeC[19]={"ぁ","あ","い","ぇ","え","ぉ","け","げ","こ","さ","ざ","し",
	"じ","す","ず","せ","ぜ","そ","ぞ"};
	//蜡聪内靛 茄臂 吝己 鉴辑钎
char* UNI_CHAR::UniCodeV[21]={"た","だ","ち","ぢ","っ","つ","づ","て","で","と","ど","な",
	"に","ぬ","ね","の","は","ば","ぱ","ひ","び"};
	//蜡聪内靛 茄臂 辆己 鉴辑钎 
char* UNI_CHAR::UniCodeJ[28]={" ","ぁ","あ","ぃ","い","ぅ","う","ぇ","ぉ","お","か","が","き",
	"ぎ","く","ぐ","け","げ","ご","さ","ざ","し","じ","ず","せ","ぜ","そ","ぞ"}; 




UNI_CHAR::UNI_CHAR()
{
/* 	char *tmpUniCodeC[19]={"ぁ","あ","い","ぇ","え","ぉ","け","げ","こ","さ","ざ","し",
		"じ","す","ず","せ","ぜ","そ","ぞ"};
		//蜡聪内靛 茄臂 吝己 鉴辑钎
	 char* tmpUniCodeV[21]={"た","だ","ち","ぢ","っ","つ","づ","て","で","と","ど","な",
		"に","ぬ","ね","の","は","ば","ぱ","ひ","び"};
		//蜡聪内靛 茄臂 辆己 鉴辑钎 
	 char* tmpUniCodeJ[28]={" ","ぁ","あ","ぃ","い","ぅ","う","ぇ","ぉ","お","か","が","き",
		"ぎ","く","ぐ","け","げ","ご","さ","ざ","し","じ","ず","せ","ぜ","そ","ぞ"}; 

	 // 檬扁拳甫 绢痘霸 秦具 且瘤 葛福摆促..
	 // 弊矾唱 老窜 箭磊父 啊瘤绊 魄窜窍扁 锭巩俊..
	 */
}

UNI_CHAR::~UNI_CHAR()
{

}


BOOL UNI_CHAR::CheckString(CString str)
{
	BYTE *cComp;
	int nLength = str.GetLength();
	cComp = (BYTE*)str.GetBuffer(nLength);

	for (int i=0; i < nLength; i++) 
	{
#ifdef KOR_VER			
		int nCode = 949;//korea
#endif
#ifdef CHN_VER
		int nCode = 936; //china
#endif
#ifdef ENG_VER
		int nCode = 1252; //English
#endif
		if ( IsDBCSLeadByteEx(nCode,str.GetAt(i)) ) { // 茄臂磊家老 版快.
			ASSERT(i < nLength-1);
#ifdef KOR_VER			
			CVJ cvj;
			cvj = UNIDivChar(((LPSTR)(LPCTSTR)str)+i);
			if (!CheckUNIChar(cvj)) {
				return FALSE;
			}
#endif
#ifdef CHN_VER
		BYTE cTemp[2];

		memcpy(cTemp,cComp+i,sizeof(BYTE)*2);
		int nLen = MultiByteToWideChar(CP_ACP, 0,(char*)cTemp, -1, NULL, NULL);
		LPWSTR lpszW = new WCHAR[nLen];
		MultiByteToWideChar(CP_ACP, 0, (char*)cTemp, -1, lpszW, nLen);

		WORD wTemp = *(WORD *)lpszW;		
	
		delete[] lpszW;
		if(wTemp < 0x4e00 || wTemp > 0x9fa5){		
			return FALSE;
		}
#endif
			i ++;
		} else { // 康巩 磊家老 版快.
			if((cComp[i] >= 48 && cComp[i] <= 57) || 
			   (cComp[i] >= 64 && cComp[i] <= 90) ||
			   (cComp[i] >= 97 && cComp[i] <= 122)) 
			{
				
			}
			else{
				return FALSE;
			}
			//TRACE("(%c) \n", temp.GetAt(i));
		}
	}

	return TRUE;
}



BOOL UNI_CHAR::CheckUNIChar(CVJ cvj)
{
	BOOL rev = TRUE;
	if (cvj.C>=0 && cvj.C<19) {
		//TRACE("(%s) ", UniCodeC[cvj.C]);
	}
	else {
		//TRACE("(-) ");
		rev = FALSE;
	}

	if (cvj.V>=0 && cvj.V<21) {
		//TRACE("(%s) ", UniCodeV[cvj.V]);
	}
	else {
		//TRACE("(-) ");
		rev = FALSE;
	}

	if (cvj.J>=0 && cvj.J<28) {
		//TRACE("(%s) \n", UniCodeJ[cvj.J]);
	}
	else {
		//TRACE("(-) \n");
	}

	return rev;
}


UNI_CHAR::CVJ UNI_CHAR::UNIDivChar(char *pDivWord)
{
	CVJ Result; //函券茄 檬己 吝己 辆己 蔼阑 逞辨 函荐
	int cCode,vCode,jCode; //蜡聪内靛 茄臂俊辑狼 檬己/吝己/辆己狼 内靛蔼
	char inputSyllable[3]; //逞绢柯 牢磊甫 汗荤窍咯 捞侩
	
	strncpy(inputSyllable,pDivWord,2);//窜绢狼 霉臂磊甫 汗荤
	inputSyllable[2]=NULL;//strncpy绰 NULL阑 嘿捞瘤 澈栏骨肺 碍力肺 持绢淋
	
	//蜡聪内靛肺 函券, 肯己屈 内靛甫 荤侩秦具窍搁 羔 林技筷(内靛抛捞喉 鞘夸)
	int nLen = MultiByteToWideChar(CP_ACP, 0,inputSyllable, -1, NULL, NULL);
	LPWSTR lpszW = new WCHAR[nLen];
	MultiByteToWideChar(CP_ACP, 0, inputSyllable, -1, lpszW, nLen);
	
	
	cCode =(lpszW[0] - 0xAC00) / (588); //588=21*28(檬己) 
	vCode =((lpszW[0] - 0xAC00) % (588)) / 28; //588=21*28(吝己)
	jCode =(lpszW[0] - 0xAC00) % 28; //(辆己)
		
	Result.C=cCode;
	Result.V=vCode;
	Result.J=jCode;
	
	
	delete []lpszW;
	return Result;
}

⌨️ 快捷键说明

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