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

visualfc

  C++博客 :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
  42 隨筆 :: 0 文章 :: 119 評論 :: 0 Trackbacks
  原創(chuàng) visualfc
   WTL的應(yīng)用程序向?qū)В↙UA版)使用IupLua編寫,本文將對其源代碼作一下簡要說明,并分析了該向?qū)У亩嗾Z言界面處理機制。
   WTL的應(yīng)用程序向?qū)г创a可以從 http://code.google.com/p/visualfc/downloads/list下載。下面對其作一下簡要說明。
   
一、開發(fā)環(huán)境:
    本向?qū)ч_發(fā)環(huán)境是Lua for Windows,該項目地址為:http://luaforwindows.luaforge.net/
    wiz_main.wlua是向?qū)е魑募褂眉兾谋靖袷骄帉憽?br>    wiz_chs.wlua是中文向?qū)В跏蓟酥形慕缑婧笳{(diào)用wiz_main.wlua
    resource目錄為向?qū)褂玫闹形馁Y源文件和圖片
    Template目錄為應(yīng)用程序向?qū)0迥夸洠瑥腤TL80發(fā)行包中獲取并增加部分功能。

二、向?qū)Э丶?br>    IupLua當前版本(2.7)未提供向?qū)Э丶晕沂褂肐upLua編寫了一個向?qū)Э丶T创a位于iup\iupwizard.lua 文件中。

三、Iup的id擴展:
    這個在以前文章中有過介紹,僅舉例說明 iup.button{title="ok",id="btn_id"},這樣可以直接引用btn_id來表示此button,源碼位于iup\iupid.lua中。

四、vswizard.dll文件
   主要提供了分析Template目錄下模板文件的功能以及一些輔助函數(shù)供LUA使用。
   這是從VFC的WTL向?qū)е幸浦策^來,源碼位于source\iup_vswizard目錄下
   其中l(wèi)uabind目錄為自己寫的一個c++到lua的簡單綁定。
 
五、絕對路徑
   我發(fā)現(xiàn)在Lua中很難獲取lua文件的絕對路徑,最后我使用了在vswizard.dll中導(dǎo)出get_module_path 函數(shù)的辦法以供lua模塊使用,如果誰有更簡便的方法望告之以加以改進。

六、多語言界面處理:
   Iup目前版本不支持UNICODE,但可以支持代碼頁。本向?qū)У亩嗾Z言處理采用了lua的表方式進行處理,在lua源文件中需要顯示字符串的地方,使用ui("Sample string")的來取代"Sample string"。
   通過resource\build_lang.lua這個多語言生成工具,可以從lua源文件中直接提取ui("..."),并生成lang_chs.lua供翻譯使用,當修改了向?qū)е械膗i字符串后,重新運行build_lang.lua,取可重新提取ui("...")字符串,并且不會影響到已經(jīng)翻譯好的字符串。
   我截取了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 函數(shù),在wiz_main.wlua中判斷是否已經(jīng)獲取了ui函數(shù),如果沒有則使用源字符串輸出。
local ui = ui or function(str) return str end
   最后可以看一下build_lang.lua源代碼,從中可以發(fā)現(xiàn)使用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 閱讀(2422) 評論(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>
            久久岛国电影| 国外成人在线视频网站| 久久精品国产77777蜜臀| 亚洲综合精品一区二区| 亚洲午夜免费视频| 亚洲欧美日韩国产| 欧美在线观看天堂一区二区三区| 亚洲国产日韩欧美综合久久| 午夜一区二区三视频在线观看| 亚洲国产美女精品久久久久∴| 国产精品久久久久aaaa| 欧美一区二区三区啪啪| 亚洲女女做受ⅹxx高潮| 亚洲欧美国产日韩天堂区| 亚洲欧美激情一区二区| 欧美在线一级va免费观看| 性色一区二区三区| 欧美一区亚洲二区| 久久久久99精品国产片| 久久一区二区三区国产精品| 欧美一区国产一区| 影音先锋久久精品| 国产亚洲一区二区精品| 免费观看欧美在线视频的网站| 欧美国内亚洲| 国产视频一区二区三区在线观看| 亚洲国产精品一区制服丝袜| 欧美成人免费在线视频| 合欧美一区二区三区| 国产午夜精品理论片a级探花 | 红桃视频亚洲| 在线免费观看成人网| 亚洲欧洲一区二区天堂久久| 欧美福利视频在线观看| 欧美日韩人人澡狠狠躁视频| 国产精品日本欧美一区二区三区| 国产一区二区三区高清| 亚洲激情一区二区三区| 亚洲午夜电影网| 久久国产综合精品| 欧美激情久久久久| 99精品黄色片免费大全| 亚洲成在人线av| 亚洲免费精彩视频| 中文欧美在线视频| 久久久久久亚洲综合影院红桃| 亚洲一区二区不卡免费| 久久精品在线免费观看| 亚洲韩国日本中文字幕| 午夜精品久久久99热福利| 久久一区二区三区av| 国产精品揄拍500视频| 亚洲国内自拍| 亚洲欧美综合一区| 亚洲图片欧洲图片av| 久久躁日日躁aaaaxxxx| 亚洲视频网在线直播| 美日韩精品免费| 亚洲一卡久久| 欧美片第一页| 一区二区三区亚洲| 香蕉免费一区二区三区在线观看| 欧美激情第五页| 久久精品中文字幕免费mv| 欧美日韩国产综合在线| 在线观看成人av电影| 久久精品视频一| 一区二区三区毛片| 欧美国产成人精品| 国产精品国产a级| 9l国产精品久久久久麻豆| 美女999久久久精品视频| 亚洲欧美日韩国产综合| 国产精品久久久久久福利一牛影视 | 久久精品论坛| 99re6这里只有精品| 免费成人高清视频| 国产在线精品一区二区中文| 欧美一区二区精品| 在线视频精品一区| 欧美三级乱码| 亚洲天堂av图片| 麻豆av一区二区三区久久| 亚洲欧美日韩精品一区二区| 国产精品电影在线观看| 亚洲欧美日韩国产另类专区| 一本色道婷婷久久欧美| 欧美小视频在线| 亚洲综合精品一区二区| 亚洲欧洲日本专区| 欧美日韩一区在线| 亚洲欧美日韩精品久久久| 亚洲一区二区三区免费观看| 国产精品美女久久久久aⅴ国产馆| 亚洲欧美变态国产另类| 午夜精品美女久久久久av福利| 欧美精品啪啪| 亚洲一区欧美一区| 亚洲无线一线二线三线区别av| 国产精品入口夜色视频大尺度| 欧美在线观看www| 久久精品官网| 一区二区三区波多野结衣在线观看| 亚洲美女黄色片| 国产欧美一区二区精品忘忧草| 久久九九免费视频| 欧美在线综合| 狠色狠色综合久久| 亚洲伦理久久| 国产亚洲欧洲997久久综合| 鲁大师成人一区二区三区| 欧美成人影音| 欧美伊人久久大香线蕉综合69| 久久久久久久久综合| 国产丝袜美腿一区二区三区| 你懂的成人av| 欧美日韩另类在线| 久久精品亚洲| 欧美精品亚洲二区| 久久久91精品| 欧美午夜精品理论片a级大开眼界 欧美午夜精品理论片a级按摩 | 欧美日韩亚洲91| 久久综合中文字幕| 欧美视频免费在线观看| 蜜桃视频一区| 国产精品黄色| 欧美激情亚洲一区| 国产综合久久| 欧美自拍偷拍午夜视频| 性欧美video另类hd性玩具| 欧美色中文字幕| 亚洲精品小视频| 国产精品一区久久| av成人免费观看| 亚洲精品资源| 久久在线免费视频| 久热re这里精品视频在线6| 国产精品夜夜嗨| 亚洲欧美电影院| 久久精品123| 国产日韩专区| 欧美一区二区观看视频| 久久久久久一区二区三区| 国产欧美在线观看一区| 小辣椒精品导航| 久久久蜜桃一区二区人| 国产主播一区| 久久―日本道色综合久久| 久久午夜电影网| 在线高清一区| 欧美+日本+国产+在线a∨观看| 欧美国产欧美综合| 亚洲免费高清视频| 欧美色欧美亚洲另类二区| 一本色道久久综合亚洲精品小说| 午夜视频在线观看一区二区| 国产精品美女久久久久久久| 亚洲欧美日韩国产中文| 老鸭窝亚洲一区二区三区| 亚洲欧洲一区二区三区久久| 欧美日韩国产一中文字不卡| 亚洲综合色网站| 狼人社综合社区| 亚洲精品欧美精品| 欧美性猛交99久久久久99按摩| 亚洲一区图片| 麻豆久久精品| 亚洲一区二区伦理| 国产日韩综合一区二区性色av| 久久精品一二三| 亚洲精品久久久久久久久久久久| 亚洲午夜视频| 很黄很黄激情成人| 欧美日韩亚洲国产精品| 香蕉av777xxx色综合一区| 欧美1区2区视频| 亚洲在线中文字幕| 精品av久久707| 国产精品女主播在线观看 | 欧美高清在线观看| 亚洲一区二区三区欧美| 在线观看日产精品| 国产精品久久久久99| 久久亚洲欧美| 亚洲欧美激情精品一区二区| 欧美激情国产精品| 欧美一区免费视频| 亚洲精品一区二区三区99| 国产精品五区| 亚洲国产精品悠悠久久琪琪| 久久久精品日韩欧美| 99精品热6080yy久久| 好吊日精品视频| 国产精品毛片a∨一区二区三区|国 | 国产在线精品二区| 国产精品福利久久久| 欧美大片免费| 久久精品亚洲精品| 久久久精品2019中文字幕神马| 亚洲人午夜精品免费|