原创 visualfc
WTL的应用程序向导(LUA版)使用IupLua编写,本文将对其源代码作一下简要说明,并分析了该向导的多语言界面处理机制。
WTL的应用程序向导源代码可以从 http://code.google.com/p/visualfc/downloads/list下载。下面对其作一下简要说明。
一、开发环境:
本向导开发环境是Lua for Windows,该项目地址为: http://luaforwindows.luaforge.net/
wiz_main.wlua是向导主文件,使用纯文本格式编写。
wiz_chs.wlua是中文向导,初始化了中文界面后调用wiz_main.wlua
resource目录为向导使用的中文资源文件和图片
Template目录为应用程序向导模板目录,从WTL80发行包中获取并增加部分功能。
二、向导控件:
IupLua当前版本(2.7)未提供向导控件,所以我使用IupLua编写了一个向导控件。源代码位于iup/iupwizard.lua 文件中。
三、Iup的id扩展:
这个在以前文章中有过介绍,仅举例说明 iup.button{title="ok",id="btn_id"},这样可以直接引用btn_id来表示此button,源码位于iup/iupid.lua中。
四、vswizard.dll文件
主要提供了分析Template目录下模板文件的功能以及一些辅助函数供LUA使用。
这是从VFC的WTL向导中移植过来,源码位于source/iup_vswizard目录下
其中luabind目录为自己写的一个c++到lua的简单绑定。
五、绝对路径
我发现在Lua中很难获取lua文件的绝对路径,最后我使用了在vswizard.dll中导出get_module_path 函数的办法以供lua模块使用,如果谁有更简便的方法望告之以加以改进。
六、多语言界面处理:
Iup目前版本不支持UNICODE,但可以支持代码页。本向导的多语言处理采用了lua的表方式进行处理,在lua源文件中需要显示字符串的地方,使用ui("Sample string")的来取代"Sample string"。
通过resource/build_lang.lua这个多语言生成工具,可以从lua源文件中直接提取ui("..."),并生成 lang_chs.lua供翻译使用,当修改了向导中的ui字符串后,重新运行build_lang.lua,取可重新提取ui("...")字符串,并 且不会影响到已经翻译好的字符串。
我截取了resource/lang_chs.lua部分源代码,该文件通过build_lang.lua自动生成。
WTL的应用程序向导(LUA版)使用IupLua编写,本文将对其源代码作一下简要说明,并分析了该向导的多语言界面处理机制。
WTL的应用程序向导源代码可以从 http://code.google.com/p/visualfc/downloads/list下载。下面对其作一下简要说明。
一、开发环境:
本向导开发环境是Lua for Windows,该项目地址为: http://luaforwindows.luaforge.net/
wiz_main.wlua是向导主文件,使用纯文本格式编写。
wiz_chs.wlua是中文向导,初始化了中文界面后调用wiz_main.wlua
resource目录为向导使用的中文资源文件和图片
Template目录为应用程序向导模板目录,从WTL80发行包中获取并增加部分功能。
二、向导控件:
IupLua当前版本(2.7)未提供向导控件,所以我使用IupLua编写了一个向导控件。源代码位于iup/iupwizard.lua 文件中。
三、Iup的id扩展:
这个在以前文章中有过介绍,仅举例说明 iup.button{title="ok",id="btn_id"},这样可以直接引用btn_id来表示此button,源码位于iup/iupid.lua中。
四、vswizard.dll文件
主要提供了分析Template目录下模板文件的功能以及一些辅助函数供LUA使用。
这是从VFC的WTL向导中移植过来,源码位于source/iup_vswizard目录下
其中luabind目录为自己写的一个c++到lua的简单绑定。
五、绝对路径
我发现在Lua中很难获取lua文件的绝对路径,最后我使用了在vswizard.dll中导出get_module_path 函数的办法以供lua模块使用,如果谁有更简便的方法望告之以加以改进。
六、多语言界面处理:
Iup目前版本不支持UNICODE,但可以支持代码页。本向导的多语言处理采用了lua的表方式进行处理,在lua源文件中需要显示字符串的地方,使用ui("Sample string")的来取代"Sample string"。
通过resource/build_lang.lua这个多语言生成工具,可以从lua源文件中直接提取ui("..."),并生成 lang_chs.lua供翻译使用,当修改了向导中的ui字符串后,重新运行build_lang.lua,取可重新提取ui("...")字符串,并 且不会影响到已经翻译好的字符串。
我截取了resource/lang_chs.lua部分源代码,该文件通过build_lang.lua自动生成。
local lang
=
{}
lang[ " Project Name " ] = " 项目名称 "
lang[ " Location " ] = " 本地目录 "
lang[ " Project Name " ] = " 项目名称 "
lang[ " Location " ] = " 本地目录 "