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

📄 language.cpp

📁 经典的俄罗斯方块游戏的在VC++中的实现
💻 CPP
字号:
/////////////////////////////////////////////////////////////////////////////
// This file is part of the completely free tetris clone "CGTetris".
//
// This is free software.
// You may redistribute it by any means providing it is not sold for profit
// without the authors written consent.
//
// No warrantee of any kind, expressed or implied, is included with this
// software; use at your own risk, responsibility for damages (if any) to
// anyone resulting from the use of this software rests entirely with the
// user.
/////////////////////////////////////////////////////////////////////////////


// Language.cpp: implementation of the CLanguage class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "tetris.h"
#include "Language.h"

#include <winnls.h>

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


HMODULE	CLanguage::m_hLangDLL;
HMODULE	CLanguage::m_hLocalResource;


static struct LangDLL {
	WORD		wPrimaryLang;
	LPCTSTR		pszDLL;
} gLangDLL[] = {
	{LANG_AFRIKAANS, TEXT("AFRIKAANS.lng")},
	{LANG_ALBANIAN, TEXT("ALBANIAN.lng")},
	{LANG_ARABIC, TEXT("ARABIC.lng")},
	{LANG_BASQUE, TEXT("BASQUE.lng")},
	{LANG_BELARUSIAN, TEXT("BELARUSIAN.lng")},
	{LANG_BULGARIAN, TEXT("BULGARIAN.lng")},
	{LANG_CATALAN, TEXT("CATALAN.lng")},
	{LANG_CHINESE, TEXT("CHINESE.lng")},
	{LANG_CROATIAN, TEXT("CROATIAN.lng")},
	{LANG_CZECH, TEXT("CZECH.lng")},
	{LANG_DANISH, TEXT("DANISH.lng")},
	{LANG_DUTCH, TEXT("DUTCH.lng")},
	{LANG_ESTONIAN, TEXT("ESTONIAN.lng")},
	{LANG_FAEROESE, TEXT("FAEROESE.lng")},
	{LANG_FARSI, TEXT("FARSI.lng")},
	{LANG_FINNISH, TEXT("FINNISH.lng")},
	{LANG_FRENCH, TEXT("FRENCH.lng")},
	{LANG_GERMAN, TEXT("GERMAN.lng")},
	{LANG_GREEK, TEXT("GREEK.lng")},
	{LANG_HEBREW, TEXT("HEBREW.lng")},
	{LANG_HUNGARIAN, TEXT("HUNGARIAN.lng")},
	{LANG_ICELANDIC, TEXT("ICELANDIC.lng")},
	{LANG_INDONESIAN, TEXT("INDONESIAN.lng")},
	{LANG_ITALIAN, TEXT("ITALIAN.lng")},
	{LANG_JAPANESE, TEXT("JAPANESE.lng")},
	{LANG_KOREAN, TEXT("KOREAN.lng")},
	{LANG_LATVIAN, TEXT("LATVIAN.lng")},
	{LANG_LITHUANIAN, TEXT("LITHUANIAN.lng")},
	{LANG_NORWEGIAN, TEXT("NORWEGIAN.lng")},
	{LANG_POLISH, TEXT("POLISH.lng")},
	{LANG_PORTUGUESE, TEXT("PORTUGUESE.lng")},
	{LANG_ROMANIAN, TEXT("ROMANIAN.lng")},
	{LANG_RUSSIAN, TEXT("RUSSIAN.lng")},
	{LANG_SERBIAN, TEXT("SERBIAN.lng")},
	{LANG_SLOVAK, TEXT("SLOVAK.lng")},
	{LANG_SLOVENIAN, TEXT("SLOVENIAN.lng")},
	{LANG_SPANISH, TEXT("SPANISH.lng")},
	{LANG_SWEDISH, TEXT("SWEDISH.lng")},
	{LANG_THAI, TEXT("THAI.lng")},
	{LANG_TURKISH, TEXT("TURKISH.lng")},
	{LANG_UKRAINIAN, TEXT("UKRAINIAN.lng")},
	{LANG_VIETNAMESE, TEXT("VIETNAMESE.lng")}
};

#define ENDVEC( vector )	(vector-1+sizeof(vector)/sizeof(vector[0]))

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

CLanguage::CLanguage()
{
	m_LangID = ::GetUserDefaultLangID();

	LPCTSTR pszLangDll = 0;

	LangDLL	* low = gLangDLL;
	LangDLL * high = ENDVEC(gLangDLL);

	WORD wLang = PRIMARYLANGID(m_LangID);

	while( low <= high ) {
		if( low->wPrimaryLang == wLang ) {
			pszLangDll = low->pszDLL;
			break;
		}
		++low;
	}

	if( pszLangDll )
		m_hLangDLL = ::LoadLibrary(pszLangDll);

	m_hLocalResource = ::GetModuleHandle(0);
}

CLanguage::~CLanguage()
{
	if( m_hLangDLL )
		::FreeLibrary(m_hLangDLL);
	m_hLangDLL = 0;
}


BOOL CLanguage :: LoadString(CString & str, UINT uResource) {
	BOOL bRet = FALSE;
	int bufsize = 512;
	LPTSTR buf = str.GetBufferSetLength(bufsize);
	if( m_hLangDLL )
		bRet = ::LoadString(m_hLangDLL, uResource, buf, bufsize);
	if( ! bRet )
		bRet = ::LoadString(m_hLocalResource, uResource, buf, bufsize);
	str.ReleaseBuffer();
	return bRet;
}

⌨️ 快捷键说明

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