枫叶文学网www.fywxw.com
Visual C++ 6.0 程序设计从入门到精通
·268·
资源。将下述数据成员添加到CLanguagesApp 类中,代码如下:
protected:
//资源链接库句柄
HINSTANCE m_hLangDLL;
3.修改InitInstance()函数
应用程序需要判别系统的默认语种,并装入对应的资源链接库。将下面的代码加到
InitInstance 函数中,代码如下:
BOOL CLanguagesApp::InitInstance()
{
AfxEnableControlContainer();
// 判定系统默认语种
WORD wLangPID=PRIMARYLANGID(::GetSystemDefaultLangID());
// 载入资源动态链接库
switch( wLangPID)
{
case LANG_CHINESE:
m_hLangDLL=::LoadLibrary("chinese.dll");
break ;
default:
m_hLangDLL=::LoadLibrary("english.dll");
break;
}
if(!m_hLangDLL)
{
AfxMessageBox(_T("无法装载资源链接库!")) ;
return FALSE ;
}
// 连接资源
AfxSetResourceHandle(m_hLangDLL) ;
??
}
其中,cāo作系统所使用的默认语种由Win 32 函数GetSystemDefaultLangID 取得。宏
PRIMARYLANGID 取出主语言标识符进行判断,以正确选择应该调用的链接库。链接库的
加载由Win32 函数LoadLibrary 实现。程序中所使用的资源库由AfxSetResourceHandle 函数
指定。
4.处理ExitInstance()函数
程序退出时使用Win 32 函数FreeLibrary 卸载已经装入的动态链接库。将下列代码添加
到ExitInstance 函数中,代码如下:
枫叶文学网www.fywxw.com
第10 章 动态链接库
·269·
int CLanguagesApp::ExitInstance()
{
//释放资源链接库
if(m_hLangDLL)
AfxFreeLibrary(m_hLangDLL);
return CWinApp::ExitInstance();
}
5.修改OnDraw
为了说明是从资源链接库中动态地获取数据而不是从程序的执行体中获取,该程序从资
源链接库中获取了一个字符串,并绘制在屏幕上。代码如下: