【wxlua教程三】开始例程

来源:互联网 发布:淘宝假物流单号怎么办 编辑:程序博客网 时间:2024/05/01 23:12

说明:

这一篇就开始讲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用的)

0 0