なんていったって、wxWidgetsがわからないのでwxErlangもわからない。
ソース:
-module(irc).
-export([start/0]).
-compile(export_all).
-include_lib("wx.hrl").
start() ->
Wx = wx:new(),
Frame = wx:batch(fun() -> create_window(Wx) end),
wxWindow:show(Frame),
loop(Frame),
wx:destroy(),
ok.
create_window(Wx)->
Frame = wxFrame:new(Wx,
-1,
"IRC On wxErlang",
[{size,{300,200}}]),
% Create Sizer
% Panel = wxPanel:new(Frame),
% Sz = wxStaticBoxSizer:new(?wxVERTICAL, Panel, [{label, "BoxLabel"}]),
% wxPanel:setSizer(Panel,Sz),
% Create MenuBar
MB = wxMenuBar:new(),
% Create Menu
File = wxMenu:new([]),
wxMenu:append(File, ?wxID_PRINT, "&Print code"),
wxMenu:appendSeparator(File),
wxMenu:append(File, ?wxID_EXIT, "&Quit"),
% Create Menu
Help = wxMenu:new([]),
wxMenu:append(Help, ?wxID_HELP, "Help"),
wxMenu:append(Help, ?wxID_ABOUT, "About"),
% Append Menu on MenuBar
wxMenuBar:append(MB, File, "&File"),
wxMenuBar:append(MB, Help, "&Help"),
% Set MenuBar on Frame
wxFrame:setMenuBar(Frame,MB),
% Create StatusBar
wxFrame:createStatusBar(Frame,[]),
wxFrame:setStatusText(Frame,"Hello World"),
% connect
wxFrame:connect(Frame, close_window),
wxFrame:connect(Frame, command_menu_selected),
Frame.
loop(Frame) ->
receive
#wx{event=#wxClose{}} ->
io:format("~p Closing window ~n",[self()]),
ok = wxFrame:setStatusText(Frame, "Closing...",[]),
wxWindow:destroy(Frame),
ok;
Msg ->
io:format("Got ~p ~n",[Msg]),
loop(Frame)
end.
wx.hrlはErlangのインストールディレクトリから検索をかけると見つかると思う。
それを実行モジュールと同一ディレクトリに配置する。
ステータスバーに「Hello World」が表示されるが、メニューを触ると消える。
なんだそれは!