【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用的)
相关文章推荐
- 开始iOS 7中自动布局教程(一)
- Ycnd 2D图形引擎SDK下载、教程、例程汇总
- 正式开始做培训项目,会做一些系列教程放上来
- 从基础开始:CSS实用教程(三)
- spring boot系列教程2--从helloworld开始
- 原创教程“ActionScript3.0游戏中的图像编程”开始连载啦!
- [js高手之路] html5 canvas系列教程 - 开始路径beginPath与关闭路径closePath详解
- 【写给朱大虫的教程】【Ruby on Rails】【004】违背Rails理念的简单开始,上部
- 【Heritrix基础教程之4】开始一个爬虫抓取的全流程代码分析 分类: H3_NUTCH 2014-06-04 20:10 1039人阅读 评论(0) 收藏
- 开始iOS 7中自动布局教程(二)
- 开始iOS 7中自动布局教程(一)
- 做威客,让您从一块钱开始赚钱【教程】
- 从壹开始前后端分离 [ vue + .netcore 补充教程 ] 三十║ Nuxt实战:动态路由+同构
- 【iCore2 双核心板视频教程一】iM_LAN 100M 以太网模块UDP例程(包含视频教程)
- Yii框架官方教程增补篇2——开始:安装Yii框架
- 智捷公开课马上开始了-欢迎大家一起讨论学习-第一系列读《Swift开发指南(修订版) 》看Swift视频教程
- RabbitMQ系列教程之一:我们从最简单的事情开始!Hello World
- [PHP]从HelloWorld开始的基本语法入门教程
- CEF3自研究笔记 二、从简单例程开始cefsimple
- IOS编程浅蓝教程(一)先决条件:开始iOS编程的必要准备