青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

visualfc

  C++博客 :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
  42 隨筆 :: 0 文章 :: 119 評論 :: 0 Trackbacks
  原創 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自動生成。
local lang = {}
lang[
"Project Name"= "項目名稱"
lang[
"Location"= "本地目錄"

--ui("test str")
function ui(str)
    
if lang[str] ~= nil and lang[str] ~= "" then
        
return lang[str]
    
else
        
return str
    end
end
   啟用中文界面的wiz_main.wlua文件源碼如下:
require "vswizard"

local app_path 
= vswizard.get_module_path()
local_lang 
= string.upper(vswizard.get_local_lang())

if local_lang == "CHS" then
    dofile(app_path..
"\\Resource\\lang_chs.lua")
end

dofile(app_path..
"\\wiz_main.wlua")
   如果當前語言為中文則加載lang_chs.lua文件并獲得了 ui 函數,在wiz_main.wlua中判斷是否已經獲取了ui函數,如果沒有則使用源字符串輸出。
local ui = ui or function(str) return str end
   最后可以看一下build_lang.lua源代碼,從中可以發現使用LUA來作此類工具非常的容易。
function make_file(name, out_name)
    file 
= io.open(name,"r")
    assert(file,
"Error to load File"..name)

    s 
= file:read("*all")
    words 
= {}
    saves 
= {}
    
for w in string.gmatch(s,"ui%s-%(%s-(\".-\")%s-%)"do
        
if words[w] == nil then
            saves[#saves
+1= w
            words[w] 
= [[""]]
        end
    end

    file:close()

    file 
= io.open(out_name,"r")
    old = ""
    
if file then
        old 
= file:read("*all")
    end
 
   for w,w1 in string.gmatch(old,"lang%[(\".-\")%]%s-=%s-(\".-\")"do
        
if w1 ~= "" then
            words[w] 
= w1
        end
    end

    file 
= io.open(out_name,"w")
    assert(file,
"Error to write file"..out_name)

    file:write("-- lang file for "..name.."\n\n")
    file:write(
"local lang = {}\n")
    
for k,v in ipairs(saves) do
        file:write(
string.format("lang[%s] = %s\n",v,words[v]))
    end
    file:write(
[[

--ui("test str")
function ui(str)
    
if lang[str] ~= nil and lang[str] ~= "" then
        
return lang[str]
    
else
        
return str
    end
end

]])
end

make_file(
"..\\wiz_main.wlua","lang_chs.lua")


posted on 2009-01-07 13:21 visualfc 閱讀(2423) 評論(0)  編輯 收藏 引用 所屬分類: WTLLUA
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            欧美福利电影在线观看| 亚洲视频福利| 久色婷婷小香蕉久久| 在线精品视频一区二区三四| 噜噜噜91成人网| 欧美成人资源网| 宅男噜噜噜66一区二区 | 精品999在线播放| 欧美成人国产一区二区| 欧美精品久久一区| 亚洲欧美激情精品一区二区| 午夜精品一区二区三区在线| 亚洲电影第三页| 日韩午夜视频在线观看| 国产精品视频免费观看| 老司机午夜精品| 久久人人九九| 久久久国产91| 一区二区三区|亚洲午夜| 欧美色视频一区| 亚洲一区二区三区涩| 日韩视频免费观看| 亚洲图片在线| 激情文学一区| 亚洲视频一区在线观看| 韩国欧美一区| 一区二区激情| 在线精品亚洲| 亚洲自啪免费| 夜夜嗨av一区二区三区四区| 久久xxxx| 亚洲影院污污.| 牛夜精品久久久久久久99黑人 | 欧美成人中文| 欧美在线视屏| 欧美三级日本三级少妇99| 蜜臀久久99精品久久久画质超高清| 久久狠狠亚洲综合| 欧美日韩精品免费观看视频| 久久久免费观看视频| 国产精品外国| 一本到12不卡视频在线dvd| 亚洲电影专区| 久久久久国产精品一区| 欧美在线视频不卡| 欧美日韩亚洲综合一区| 亚洲国产成人一区| 国内外成人在线视频| 亚洲欧美国产精品桃花 | 国产日韩欧美视频| 一区二区三区精品国产| 日韩亚洲欧美精品| 卡通动漫国产精品| 美女性感视频久久久| 国外精品视频| 久久精品盗摄| 久久综合九色99| 国产一区二区三区在线观看网站 | 另类激情亚洲| 美日韩精品视频| 黑人巨大精品欧美一区二区小视频 | 免费在线亚洲| 亚洲高清电影| 免费黄网站欧美| 亚洲第一主播视频| 亚洲精品视频中文字幕| 欧美成人中文| 亚洲精品影院在线观看| 亚洲一级在线| 国产精品一级在线| 午夜精品久久久久久久久久久久久| 亚洲欧美日韩成人| 国产欧美69| 欧美久久视频| 亚洲欧美日韩电影| 国产精品视频yy9299一区| 亚洲一卡久久| 久久久久国产成人精品亚洲午夜| 国产亚洲美州欧州综合国| 久久国产精品久久久久久| 男人的天堂成人在线| 亚洲九九爱视频| 欧美三区美女| 香蕉亚洲视频| 亚洲国产成人久久综合| 中文日韩在线视频| 国产亚洲激情| 美女诱惑一区| 在线亚洲美日韩| 久久亚洲色图| 久久福利电影| 亚洲精品视频二区| 久久av资源网| 亚洲免费播放| 国产日韩专区在线| 免费av成人在线| 亚洲一区美女视频在线观看免费| 免费久久99精品国产| 夜夜嗨av一区二区三区四区| 国产在线欧美日韩| 欧美日韩hd| 久久精品系列| 亚洲午夜伦理| 亚洲激情在线激情| 久久精品国产99国产精品| 亚洲麻豆av| 国产一区二区三区视频在线观看| 欧美剧在线观看| 久久久久久亚洲精品杨幂换脸| av成人免费| 亚洲高清不卡在线| 久久久久9999亚洲精品| 亚洲视频导航| 亚洲人成在线影院| 好吊日精品视频| 国产精品裸体一区二区三区| 欧美成人午夜视频| 久久精品国产清高在天天线| 亚洲午夜视频在线观看| 亚洲欧洲三级电影| 女仆av观看一区| 久久久午夜精品| 欧美呦呦网站| 亚洲欧美日韩精品| 亚洲一级高清| 99在线热播精品免费| 亚洲国产高清高潮精品美女| 国产一区二区av| 国产日韩欧美二区| 国产精品久久久久99| 欧美三级电影精品| 欧美特黄a级高清免费大片a级| 欧美成人综合一区| 免费一级欧美在线大片| 久久香蕉国产线看观看av| 久久精品九九| 久久久999精品免费| 久久久福利视频| 久久国产精品久久久久久电车| 亚洲欧美中文日韩在线| 亚洲午夜激情| 99一区二区| 中日韩男男gay无套| 中文精品视频| 亚洲欧美另类国产| 欧美专区日韩视频| 久久久久国产成人精品亚洲午夜| 久久国产一区二区| 美女诱惑一区| 欧美怡红院视频| 亚洲一区二区不卡免费| 99精品热视频| 亚洲欧美国产精品专区久久| 亚洲一区日韩在线| 欧美伊人精品成人久久综合97| 久久久久成人精品| 免费影视亚洲| 国产精品地址| 国产亚洲一本大道中文在线| 狠狠干综合网| 亚洲精品国精品久久99热一| av成人免费观看| 欧美一区午夜精品| 免费不卡欧美自拍视频| 91久久午夜| 亚洲欧美日韩在线一区| 久久久久一本一区二区青青蜜月| 欧美aaa级| 国产精品影视天天线| 亚洲国产成人不卡| 亚洲夜间福利| 免费视频一区二区三区在线观看| 亚洲激情午夜| 午夜欧美不卡精品aaaaa| 噜噜爱69成人精品| 国产精品九九| 亚洲电影在线观看| 亚洲素人一区二区| 看片网站欧美日韩| 一二美女精品欧洲| 久久亚洲影院| 国产精品午夜电影| 亚洲精品社区| 久久久久久久久一区二区| 亚洲伦理久久| 久久日韩粉嫩一区二区三区| 欧美视频一区二区三区…| 在线高清一区| 欧美在线精品一区| 亚洲三级毛片| 久久嫩草精品久久久久| 国产精品高潮呻吟| 亚洲精品视频在线观看免费| 久久久视频精品| 亚洲综合激情| 欧美日韩免费高清| 最新69国产成人精品视频免费| 久久精品一区二区三区不卡牛牛 | 校园激情久久| 亚洲精品影院在线观看|