languageresmanage.cpp

来自「深入浅出Visual C++入门进阶与应用实例 随书光盘 作者 何志丹」· C++ 代码 · 共 75 行

CPP
75
字号
// LanguageResManage.cpp: implementation of the CLanguageResManage class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "Ex110202.h"
#include "LanguageResManage.h"

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

extern CEx110202App theApp;

CLanguageResManage::CLanguageResManage()
{
	m_uCurLangIndex = 0 ;
	m_hCurLangDLL = NULL;	
}

CLanguageResManage::~CLanguageResManage()
{
	
}

bool CLanguageResManage::Init()
{
	m_uCurLangIndex = AfxGetApp()->GetProfileInt("语言","当前语言",0);
	return ChangeLanguage(m_uCurLangIndex);
}

bool CLanguageResManage::Exit()
{
	Release();
	AfxGetApp()->WriteProfileInt("语言","当前语言",m_uCurLangIndex);
	return true ;
}

bool CLanguageResManage::ChangeLanguage(int nLangIndex)
{
	Release();
	
	if( 0 == nLangIndex )
	{
		AfxSetResourceHandle(theApp.m_hInstance );
		m_uCurLangIndex = 0 ;
		return true ;
	}
	//取得属性名
	CString strEntryName ;
	strEntryName.Format("LangDll%d",nLangIndex);
	//取得DLL名称
	CString strDLLName = AfxGetApp()->GetProfileString("语言",strEntryName,"");
	if(strDLLName.IsEmpty())
		return false ;
	//设置资源
	m_hCurLangDLL=::LoadLibrary(strDLLName);
	if(NULL == m_hCurLangDLL)
		return false ;
	m_uCurLangIndex = nLangIndex ;
	AfxSetResourceHandle(m_hCurLangDLL);
	
	return true ;	
}

bool CLanguageResManage::Release()
{
	if(NULL != m_hCurLangDLL && theApp.m_hInstance != m_hCurLangDLL)
		return true ;//使用Exe中的资源,不需要也不能释放
	
	return AfxFreeLibrary(m_hCurLangDLL);	
}

⌨️ 快捷键说明

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