| |
VC++动态链接库编程之DLL典型实例 |
|
时间: 2005-10-11 来自:天极网 |
 |
|
7.2纯资源DLL
我们在应用程序中产生如图18所示的资源(对话框)
 图18
中文对话框 | 在与这个应用程序相同的工作区里利用MFC向导建立两个简单的DLL,把应用工程中的资源全选后分别拷贝到ChineseDll和EngLishDll,在EnglishDll工程的资源文件中搜索下面的语句:
/////////////////////////////////////////////////////////////////////////////
//
Chinese (P.R.C.) resources
#if !defined(AFX_RESOURCE_DLL) ||
defined(AFX_TARG_CHS) #ifdef _WIN32 LANGUAGE LANG_CHINESE,
SUBLANG_CHINESE_SIMPLIFIED #pragma code_page(936) #endif
//_WIN32 | 将其改为:
///////////////////////////////////////////////////////////////////////////// //
English (U.S.) resources
#if !defined(AFX_RESOURCE_DLL) ||
defined(AFX_TARG_ENU) #ifdef _WIN32
LANGUAGE LANG_ENGLISH,
SUBLANG_ENGLISH_US
#pragma code_page(1252) #endif
//_WIN32 | 并将其中所有的中文翻译为英文。这个DLL为我们提供了如图19所示的对话框资源。
 图19英文对话框 | 修改应用工程的InitInstance()函数,在
CResourceDllCallDlg dlg; m_pMainWnd = &dlg; int nResponse =
dlg.DoModal(); | 之前(即对话框显示之前)添加如下代码:
//获取操作系统的语言
WORD wLangPID = PRIMARYLANGID(
GetSystemDefaultLangID() ); if( LANG_CHINESE == wLangPID
) { hLanguageDll = LoadLibrary( "ChineseDll.dll" );
//加载中文资源 } else { hLanguageDll = LoadLibrary(
"EnglishDll.dll" ); //加载英文资源 }
if( NULL == hLanguageDll
) { AfxMessageBox( "Load DLL failure" ); return
FALSE; } AfxSetResourceHandle( hLanguageDll );
//设置当前的资源句柄 | 这样的应用程序将具有自适应性质,在中文OS中显示中文资源,在英文OS中则显示英文资源。
|
|
|
|
|
|
|
|