2011年6月20日月曜日

wxErlang wxSashWindow サンプル

よくわからない画面だが、サンプルだけはできた。


ソース:

-module(sashWindowTest).
-include_lib("wx.hrl").

-export([start/0]).
-define(TOP_SASH, 1).
-define(BOTTOM_SASH, 2).

start()->
    Wx = wx:new(),
    Frame = wx:batch(fun() -> create_window(Wx) end),
    wxWindow:show(Frame),
    loop(Frame),
    wx:destroy(),
    ok.

create_window(Wx)->  
    %% Create Frame
    Frame = wxFrame:new(Wx,
 -1,
 "sashWindow Example",
 %%[{size,{300,200}}]),
 [{size,{-1,-1}}]),

    %% Create Panel
    %%Panel1 = wxPanel:new(Frame),
     Panel = wxPanel:new(Frame, []),

    %% Setup sizers
    MainSizer = wxBoxSizer:new(?wxVERTICAL),
    Sizer = wxBoxSizer:new(?wxVERTICAL),

    TopSash = wxSashWindow:new(Panel, [{id, ?TOP_SASH},
      {style, ?wxSW_3D}]),
    Win1 = wxPanel:new(TopSash, []),
    wxStaticText:new(Win1, ?wxID_ANY, "This is the top sash", []),
    BottomSash = wxSashWindow:new(Panel, [{id, ?BOTTOM_SASH},
 {style, ?wxSW_3D}]),
    Win2 = wxPanel:new(BottomSash, []),
    wxStaticText:new(Win2, ?wxID_ANY, "This is the bottom sash", []),

    %% Make the bottom edge of the top sash dragable
    wxSashWindow:setSashVisible(TopSash, ?wxSASH_BOTTOM, true),
    %wxPanel:connect(Panel, sash_dragged),
    %wxPanel:connect(Panel, size),

    %% Add to sizers
    Options = [{flag, ?wxEXPAND}, {proportion, 1}],
    wxSizer:add(Sizer, TopSash, Options),
    wxSizer:add(Sizer, BottomSash, Options),
    wxSizer:add(MainSizer, Sizer, Options),
    wxPanel:setSizer(Panel, MainSizer),
    wxSizer:fit(MainSizer, Panel),
    wxSizer:setSizeHints(MainSizer, Panel),

    %% Set Connect Close
    wxFrame:connect(Frame, close_window),

    Frame.

loop(Frame) ->
    receive
% Window Close Event
#wx{event=#wxClose{}} ->
   io:format("~p Closing window ~n",[self()]),
   wxWindow:destroy(Frame),
   ok
    end.

wx.hrlはErlangのインストールディレクトリを検索してください。
それを本ソースと同一ディレクトリに配置してください。

仕事が終わって、この作業も疲れてきたな。

0 件のコメント:

コメントを投稿