erlang wx图形界面学习-2

来源:互联网 发布:ubuntu 切换系统语言 编辑:程序博客网 时间:2024/06/05 10:13

sudoku单独的copy出来,在终端下执行 erlc *.erl
sudoku.hrl:20: can’t find include file “../../include/wx.hrl” ,找不到wx.hrl头文件.
将wx.hrl copy 过来,在把sudoku.hrl的include改一下 -include(“wx.hrl”). 重新erlc +debug_info *.erl
之所以+debug_info是为了到时候通过debugger:start() 一步步看下去,这样比较方便,毕竟打断点嘛,这也是为什么把sudoku copy出来的原因.(发现没啥用处,不需要打断点)

sudoku:start(). 启动程序,会启动一个进程调用sudoku下的init/1 方法,
?TC实际就是调用sudoku下的tc/3, 其中timer:tc/3的作用是评估Fun() 的执行时间,也就是sudoku_gui:new/1的执行时间.

sudoku_gui模块负责的就是图形界面和事件处理
sudoku_gui:new/1 :
启动wx , wx_object:start_link/3 会调用 Mod:init/1
create_window/0:
wxFrame:new/4:生成应用窗口的框架
wxFrame:createStatusBar/2 :创建状态栏
wxFrame:connect/2 : 和事件绑定起来,事件触发时调用handle_event中对应方法.
wxMenuBar:new/0:创建一个菜单栏
wxMenu:new/1:创建一个菜单
wxMenu:append/3:在菜单末尾添加一个字符串项,并指定Id
wxMenu:appendSeparator/1:菜单末尾添加一个分隔符
wxMenu:appendRadioItem/3:添加一个单选item
wxMenu:appendCheckItem/3:添加一个可选项item
wxFrame:setMenuBar/2:为框架设置指定状态栏
wxBoxSizer:new/1: 创建一个可嵌套容器,容器的布局格式为:水平布局或者垂直布局
wxPanel:new/1:创建一个放置控件的窗口
wxButton:new/3:创建一个按钮
wxSizer是一个可嵌套的容器
wxSizer:addSpacer/2 :给sizer指定不可伸缩的空间
wxSizerFlags:new/0
wxSizerFlags:proportion/2 :proportion为1时,主方向伸缩
sudoku_board:new/1 :之后在看
wxSizer:add/3 :把一个wx_object()放入另一个wx_object()中
wxWindow:setSizer/2 :设置窗口指定的布局
wxSizer:fit/2 :调整窗口匹配sizer的大小
wxWindow:show/1 :显示窗口
wxMenuItem:Check/1 : 检查确认item选项
具体wx的方法查看 http://www.wxwidgets.org/
总的来说create_window()就是
1:创建菜单栏MenuBar;
2:创建菜单File,Opt,Help.添加到菜单栏中;
3:设置菜单栏到窗口框架Frame;
4:创建总的窗口,垂直布局的 MainSz;
5:创建存放按钮窗口,水平布局的Top;
6:创建框架面板用来存放窗口;
7:设置Top窗口到总窗口MainSz;
8:创建游戏窗口Board,设置到总窗口;
9:将总窗口放入面板Panel中;
10:显示整个Frame;