您的位置:首页 > 其它

MFC DLL (二) 之纯资源,多语言的实现

2017-10-20 15:39 267 查看
参考:http://blog.csdn.net/wangjieest/article/details/7022348

一、创建主工程

1.MFC Application-> MultiLanguage

2.Next-> Application type: Dialog based; Use of MFC: Use MFC in a shared DLL-> Finish

3.Remove 而不是 Delete, Resoure.h, Resource Files 中的所有文件

二、创建DLL (chinese, english)

1.在主工程目录下添加 MFC DLL-> chinese, english 两个 DLL 项目 (也可以在其他地方添加,如果在其他地方添加,最后要复制 .dll 文件到主工程中)

2.Next-> DLL type: Regular DLL using shared MFC DLL-> Finish

3.在两个 DLL 项目中 Delete, Resoure.h, Resource Files 中的所有文件

4.将主工程中Remove 的文件添加到两个 DLL 项目中

5.修改界面中的显示语言,中文的 DLL 显示中文,英文的  DLL 显示 英文 (注意 resource.h 等资源的同步)

6.分别编译两个 DLL 项目

三、主工程

在 CMultilanguageApp 类中添加如下的成员变量:
private:BOOL m_bChinese;HINSTANCE m_hLangDLL;


构造函数中初始化:
[cpp] view plain copy CMultilanguageApp::CMultilanguageApp()  
{  
    m_bChinese = TRUE;  
    m_hLangDLL = NULL;  
}         

在InitInstance()函数修改资源加载顺序:[cpp] view plain copy BOOL CMultilanguageApp::InitInstance()  
{  
    AfxEnableControlContainer();  
  
    if (m_bChinese)  
    {  
        m_hLangDLL=::LoadLibrary(L"chinese.dll");  
    }  
    else  
    {  
        m_hLangDLL=::LoadLibrary(L"english.dll");  
    }  
  
    AfxSetResourceHandle(m_hLangDLL);  
  
    ……  
}  
别忘了ExitInstance()函数释放掉加载的dll资源[cpp] view plain copy int CMultilanguageApp::ExitInstance()  
{  
    if(m_hLangDLL)  
        AfxFreeLibrary(m_hLangDLL);  
    return CWinApp::ExitInstance();  
}         

最后编译运行!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: