visualfc

  C++博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  42 随笔 :: 0 文章 :: 119 评论 :: 0 Trackbacks
    新买到LUA程序设计(第2版)开始学习LUA程序设计。
    今天测试用LUA调用windows的MessageBoxW函数。需要在LUA中定义UNICODE字符串。LUA的string类型为8位编码,包括数值0,可以编码任意二进制数据。如果编码UNICODE,则需要使用"\<ddd>"转义序列。如字符串"LUA"如果使用UNICODE在LUA中表示为:
text = "\076\000\085\000\065\000"
如果字符串很长,也可以使用TABLE的方式来表示:
text = table.concat{"\076\000","\085\000","\065\000"}
   我编写的LUA程序如下,win32.dll目前仅包含MessageBoxW一个函数:
-- test_win32.lua
require 
"win32"

local title 
= table.concat{"\084\000","\104\000","\105\000","\115\000","\032\000",
"\105\000","\115\000","\032\000","\097\000","\032\000",
"\116\000","\101\000","\115\000","\116\000"}

local text 
= table.concat{"\069\000","\110\000","\103\000","\108\000","\105\000",
"\115\000","\104\000","\013\000","\010\000","\073\108",
"\087\091","\013\000","\010\000","\092\213","\109\173",
"\180\197","\013\000","\010\000"}

win32.MessageBoxW(0,text,title,0)

    为了在LUA中方便的编写UNICODE字符串,我使用WTL编写了一个LUA用UNICODE转换程序,支持unicode->lua(table)和lua(table)->unicode的双向转换。
下载地址:
http://www.cppblog.com/Files/visualfc/lua_uni.zip
压缩包中包括了LUA_UNICODE的源代码,源码中的BIN目录中包括编译好的可执行文件和LUA脚本。
LUA_UNI程序使用WTL编写,在VS60下使用VisualFC插件设计完成。

LUA_UNICODE程序界面如下:

posted on 2008-12-05 00:23 visualfc 阅读(3487) 评论(4)  编辑 收藏 引用 所属分类: WTL

评论

# re: 开始学习LUA,在LUA中使用UNICODE字符串 2008-12-05 09:19 muf
用lua的时候,不应该用这种方法来弄unicode。
而应该去改动lua的源码,来实现unicode。  回复  更多评论
  

# re: 开始学习LUA,在LUA中使用UNICODE字符串 2008-12-05 09:39 visualfc
初学LUA,毕竟使用\ddd这种方式比改lua的源码的方式要简单多了。  回复  更多评论
  

# re: 开始学习LUA,在LUA中使用UNICODE字符串[未登录] 2008-12-05 23:20 missdeer
照我说,为什么要让lua使用unicode,保证C++跟Lua交互时不用unicode不就行了  回复  更多评论
  

# re: 开始学习LUA,在LUA中使用UNICODE字符串[未登录] 2008-12-06 11:05 visualfc
一直用WTL,习惯于使用unicode了。如果在lua中大量使用 unicode,这种方式还是比较费事,看来只能增加一个类似luaL_loadfile的函数来支持了。  回复  更多评论
  


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理