www.pudn.com > tetris.zip > LANGUAGE.CPP
///////////////////////////////////////////////////////////////////////////// // Copyright (C) 1998 by Jörg König // All rights reserved // // 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. // // Send bug reports, bug fixes, enhancements, requests, flames, etc., and // I'll try to keep a version up to date. I can be reached as follows: // J.Koenig@adg.de (company site) // Joerg.Koenig@rhein-neckar.de (private site) ///////////////////////////////////////////////////////////////////////////// // Language.cpp: implementation of the CLanguage class. // ////////////////////////////////////////////////////////////////////// #include "stdafx.h" #include "tetris.h" #include "Language.h" #include#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; }