X
xifengge
Unregistered / Unconfirmed
GUEST, unregistred user!
最近开发一个支持多国语言的项目。项目用到了DLL插件。<br>因为DELPHI自带的多国语言功能支持控件位置和大小的修改,故舍弃了INI文件的做法。<br>为了使模块开发独立化,每个DLL插件都建立了自己专有的语言资源。如 Tool.DLL拥有Tool.CHS 和 Tool.ENU。<br><br>但是现在遇到一个问题,就是动态装载的DLL插件包含的语言包该如何载入?<br>DELPHI提供的RICHEDIT样例装载语言包的做法是:<br> 1.装载语言文件资源如 Project.CHS Project.ENU 等<br> LoadLibraryEx(PChar(LanguageResourceFile), 0, LOAD_LIBRARY_AS_DATAFILE);<br> 2.重设系统资源<br>
<br><br>这个方法解决了主程序的语言包装载,但是对于用LoadLibrary函数动态调用的DLL,LibModuleList似乎并不能列出,所以总是无法装载。<br><br>还请高手指教! 多谢多谢!!!
代码:
<br>function SetResourceHInstance(NewInstance: Longint): Longint;<br>var<br> CurModule: PLibModule;<br>begin<br> CurModule := LibModuleList;<br> Result := 0;<br> while CurModule <> nil do<br> begin<br> if CurModule.Instance = HInstance then<br> begin<br> if CurModule.ResInstance <> CurModule.Instance then<br> FreeLibrary(CurModule.ResInstance);<br> CurModule.ResInstance := NewInstance;<br> Result := NewInstance;<br> Exit;<br> end;<br> CurModule := CurModule.Next;<br> end;<br>end;<br>