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: