您的位置:首页 > 编程语言 > Lua

【wxlua教程三】开始例程

2015-02-17 16:04 513 查看

说明:

这一篇就开始讲wxlua的使用了,wxlua可以集成在你的C++程序里,

也可以当成一个独立的库给lua调用。

我这里假设你已经有一些lua基础,了解面向对象编程。

本系列托管在github

相关链接

维基面向对象页面

wxlua官网

如何运行wxlua程序

wxlua本质是lua脚本,用lua解释器可以成功运行,因为需要载入wx库,

所以wx库文件要放在lua可以寻找到的地方。通常放在程序根目录,在别的地方要设置好

package.cpath
变量。

运行
lua -e "require('wx')"
无错误提示说明成功。

创建一个最小的wxlua程序

在当前目录下新建一个lua文件,将下列代码复制进去

require("wx")
frame = wx.wxFrame( wx.NULL, wx.wxID_ANY, "wxLua Very Minimal Demo" )
frame:Show(true)
wx.wxGetApp():MainLoop()


另存为test.lua,命令行
lua test.lua


将弹出一个无内容的窗口。

代码解读

我们要使用wxlua库当然要载入wx库啦,所以第一行就是载入wx库用的。

一个图形程序都要有一个窗口,第二行就是创建窗口(也称为框架 frame。主窗口除了框架外还可以是对话框dialog)

有了窗口要让它显示对吧,就是第三行的作用。

注:
号是lua中的一个语法糖,
frame:Show(true)
等价于
frame.Show(frame,true)


就是把它本身当作一个参数传递进去。这样的写法更符合C++中写法
frame->Show(true);
.

为什么创建的窗口不会自动弹出而要设置呢,因为在一个实际的项目中,窗口不只一个,如果每创建一个窗口都自动弹出的话,程序打开时那不就会有一大推窗口了?所以调用这个函数在需要时,更符合实际。

每一个窗口程序不可能在所有的时间都在运算,它的大部分时间都在等待事件的发生,

之后调用对应的事件处理函数处理事件。

wx.wxGetApp():MainLoop()
函数就是用来进入等待模式的,一个主循环,判断有无事件的发生,反正记住,这个函数在每一个wxlua程序里通常只能出现一次且在代码最后调用。

关于Frame类

一个框架类,是大部分控件的容器,用来放置控件的。

构造函数

wxFrame(wxWindow* parent, wxWindowID id, const wxString& title,
const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize,
long style = wxDEFAULT_FRAME_STYLE, const wxString& name = "wxFrame")


参数说明

parent:框架的父窗口,也是大部分控件所必须的一个参数,默认是wx.NULL(空),

那么这个窗口称为顶级窗口。

id 每一个控件的唯一标识符,是一个数字,也是大部分控件所必须的一个参数,-1 代表由系统自动生成。

title 窗口标题

pos 位置,就是窗口左上角与显示屏左上角的坐标,类型为wxPoint,可以用函数wxPoint(x,y)创建。

size 大小,类型为wxSize,用wxSize(x,y)创建

style 窗口风格,具体的去看wxwidget参考手册,

(注: 参考手册中关于风格的|号在lua中用+号代替,^用-号代替)

name 名字,用来追踪bug用的)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息