2011年5月8日日曜日

wxErlang Button を表示させる

やっとButtonを画面に載せることができた。
wxPanelを使って。
以下ソース。

-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}}]),
   
    %GSizer = wxGridSizer:new(2),
    %SizerItem = wxSizer:add(GSizer,Frame),
    Panel = wxPanel:new(Frame),
    Button = wxButton:new(Panel,
-1,
[{label,"Button"}]),

    wxFrame:createStatusBar(Frame,[]),
    wxFrame:setStatusText(Frame,"Hello World"),
   
    wxFrame:connect(Frame, close_window),
   
    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のインストールディレクトリ配下を検索するとある。
それを実行モジュール(beam)と同一ディレクトリに置く。