tra validation here
typedef void (WINAPI * TESTDLL)(); //定义函数指针类型TESTDLL
HINSTANCE hmod; //动态链接库实例句柄
hmod = ::LoadLibrary ("mfcdll.dll"); //加载mfcdll.dll 动态链接库
if(hmod==NULL)
{
AfxMessageBox("Fail"); //如果加载动态链接库失败
}
TESTDLL lpproc; //定义接收导出函数的函数指针lpproc
lpproc = (TESTDLL)GetProcAddress (hmod,"Show"); //得到导出函数Show 的地址
if(lpproc!=(TESTDLL)NULL) //当成功得到导出函数地址的时候
(*lpproc)(); //执行动态链接库中的导出函数
FreeLibrary(hmod); //释放动态链接库资源
枫叶文学网www.fywxw.com
第10 章 动态链接库
·267·
// CDialog::OnOK();
}
执行的结果如图10-5 所示。从图中可以看出,可执行程序成功地调用了动态链接库中的
对话框资源。
图10-5 调用DLL 中的对话框资源
10.6 界面汉化示例
在Windows 系统中,应用程序开发者可以通过利用动态链接库,用一套源代码来支持多
种文字。本节将通过一个界面汉化的示例来演示动态链接库中资源的应用方法。
利用Visual C++编程,可以把所有的可见资源封装在一个资源动态链接库中,以简化本
地化工作。一般情况下,资源包含在应用程序中,但也可以通过调用AfxSetResourceHandle
函数指向一个不同的单元以完成资源的引用。本例就是首先调用该函数从动态链接库中采集
到所有的应用程序可用资源,然后通过调用GetSystemDefaultLangID 函数判断系统默认语种,
以载入不同语种的资源动态链接库实现界面与系统的自动适应。
实例10-2:界面汉化实例。源代码在光盘中“\10\实例10-2”目录下。
本节以创建一个默认语种为简体中文的Languages 应用程序为例,进一步详细说明。该
程序不含任何资源,应用程序根据系统的语种设置连接对应的资源链接库,以完成对中文和
英文两种语言的支持。
附带光盘中的chinese.dll 和english.dll 两个动态链接库分别封装了中文资源和英文资源,
下面具体介绍Languages 应用程序的实现过程。
1.创建Languages
用MFC AppWizad(exe)创建新项目的工作区,选择Simple Doccomnt 类型、中国中文(其
他的选项选择默认),并且为了明确,将工作区目录改为“多语种支持”。
2.添加数据成员
由于要动态地装入资源链接库,所以需要保存链接库的句柄以便在程序结束的时候释放