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

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>
            亚洲欧美国产日韩天堂区| 亚洲第一毛片| 中日韩美女免费视频网址在线观看 | 国产精品黄色| 国产精品成人观看视频免费| 国产精品毛片一区二区三区| 国产精品一区二区男女羞羞无遮挡 | 免费亚洲一区| 亚洲精品国产品国语在线app | 91久久久亚洲精品| 欧美国产另类| 欧美国产日韩一区| 中日韩视频在线观看| 亚洲综合日韩| 久久天天躁狠狠躁夜夜av| 欧美激情视频给我| 国产精品高潮呻吟视频| 国产最新精品精品你懂的| 亚洲人在线视频| 亚洲欧美国产毛片在线| 欧美肥婆在线| 午夜久久资源| 欧美日韩精品高清| 激情亚洲网站| 亚洲字幕一区二区| 欧美激情一区二区三级高清视频| 在线综合亚洲| 欧美激情国产高清| 国产有码一区二区| 亚洲一区二区三区色| 欧美a级一区| 午夜视频在线观看一区| 欧美日韩一区二区在线观看| 樱花yy私人影院亚洲| 小处雏高清一区二区三区| 亚洲国产欧美一区| 久久天堂精品| 韩国视频理论视频久久| 午夜精品福利电影| 国产欧美日韩一级| 宅男噜噜噜66一区二区| 亚洲高清资源综合久久精品| 久久国产精品色婷婷| 国产精品夜夜夜| 亚洲视频专区在线| 欧美顶级艳妇交换群宴| 欧美在线地址| 国产乱码精品一区二区三区不卡 | 亚洲精品欧美精品| 免费亚洲电影在线| 欧美一区二区三区四区视频| 国产精品久久毛片a| 宅男噜噜噜66国产日韩在线观看| 亚洲国产成人av| 免费在线成人av| 91久久久久久| 亚洲黄色在线看| 欧美精品福利| 国产精品99久久久久久久久| 日韩视频三区| 国产精品劲爆视频| 欧美一级视频一区二区| 亚洲欧美日韩中文播放| 久久久九九九九| 久久精品99| 午夜精品久久久久影视| 国产精品丝袜久久久久久app | 玖玖综合伊人| 久久久天天操| 亚洲精品免费一二三区| 亚洲国产成人精品久久久国产成人一区 | 巨乳诱惑日韩免费av| 久久九九电影| 亚洲国产一区二区三区高清| 亚洲欧洲日产国码二区| 欧美日韩亚洲三区| 午夜日韩av| 久久久人成影片一区二区三区观看| 亚洲国产清纯| 亚洲视频在线观看一区| 黑人一区二区三区四区五区| 欧美成ee人免费视频| 欧美另类在线播放| 欧美一级理论性理论a| 久久久久久亚洲精品杨幂换脸| 亚洲精品国精品久久99热| 日韩午夜视频在线观看| 国产精品色一区二区三区| 久久久久久婷| 欧美第十八页| 久久久91精品国产一区二区三区 | 91久久午夜| 国产日韩精品一区二区三区| 欧美成人dvd在线视频| 欧美视频在线观看一区二区| 久久久久国产精品麻豆ai换脸| 久久精品亚洲国产奇米99| 亚洲精品久久在线| 亚洲欧美日韩精品久久| 亚洲国内高清视频| 午夜精品国产精品大乳美女| 日韩亚洲精品在线| 欧美在线一二三四区| av成人动漫| 久久久99精品免费观看不卡| 亚洲一区二区免费在线| 欧美电影打屁股sp| 久久伊人亚洲| 国产精品一区在线观看| 亚洲精品久久| 亚洲国产另类精品专区| 校园激情久久| 午夜精品福利一区二区三区av| 欧美寡妇偷汉性猛交| 另类欧美日韩国产在线| 国产噜噜噜噜噜久久久久久久久 | 亚洲国产精品久久91精品| 国产精品麻豆va在线播放| 亚洲国产精品va在线观看黑人| 国产一区二区三区精品欧美日韩一区二区三区 | 亚洲高清中文字幕| 精品999日本| 先锋亚洲精品| 性欧美1819sex性高清| 欧美三级电影精品| 亚洲精品久久久久久久久久久久久| 在线播放日韩专区| 久久aⅴ国产欧美74aaa| 欧美中文在线字幕| 国产精品午夜视频| 亚洲欧美不卡| 亚洲欧美综合| 国产精品伊人日日| 亚欧成人在线| 久久精品国产视频| 国语自产精品视频在线看抢先版结局| 亚洲欧美韩国| 久久嫩草精品久久久精品| 黄色成人免费网站| 老司机久久99久久精品播放免费 | 亚洲国产精品精华液网站| 亚洲经典三级| 欧美夫妇交换俱乐部在线观看| 欧美成人在线网站| 亚洲精品乱码久久久久久蜜桃麻豆| 免费人成精品欧美精品| 国内外成人免费视频| 午夜精品久久久久久久| 久久久之久亚州精品露出| 国产亚洲欧美激情| 久久久久久网站| 亚洲国产精品一区二区www在线| 亚洲六月丁香色婷婷综合久久| 欧美高清视频一区| 制服丝袜激情欧洲亚洲| 久久精品99国产精品| 在线观看三级视频欧美| 欧美韩国在线| 亚洲欧美日韩国产综合在线| 久久一区二区三区国产精品 | 一区二区三区福利| 国产精品免费视频观看| 久久亚洲精选| 亚洲毛片av在线| 久久久精品日韩欧美| 亚洲精品国产精品乱码不99按摩| 欧美日韩中文字幕在线视频| 久久精品亚洲一区二区| 日韩亚洲欧美成人| 久久久91精品国产| 一本色道精品久久一区二区三区| 国产欧美va欧美va香蕉在| 免费在线看一区| 午夜精品久久久久久久蜜桃app| 欧美视频一区二区三区在线观看| 欧美一级久久久| 亚洲国产老妈| 国产免费成人av| 女人天堂亚洲aⅴ在线观看| 亚洲欧美国产精品桃花| 欧美激情片在线观看| 欧美在线播放视频| 亚洲精品偷拍| 尤物yw午夜国产精品视频明星 | 国产日韩在线一区二区三区| 欧美国产成人在线| 性色av一区二区三区红粉影视| 亚洲三级免费观看| 久久久久综合网| 亚洲综合日韩在线| 亚洲毛片在线观看| 在线播放亚洲| 国产亚洲一区二区三区| 欧美视频一区在线观看| 欧美freesex8一10精品| 久久激情视频免费观看| 亚洲欧美日韩中文播放| 亚洲天堂久久| 夜夜夜精品看看| 亚洲精选在线观看|