飴屋ぷろじぇくと

 ちょっとカテゴリを分けてみようかなっと。

--.--.--[--] スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

2014.10.19[日] FreeBASICでVB風GUI部品を作ってみるテスト

オブジェクトツリーはこんな感じ

Handled
  Picture
  ImageIcon
  Menu
  BaseWindow
    Placeable
      Button
        CommandButton
        RadioButton
        CheckBox
      TextBox
      ListBox
      ComboBox
    ActionBase
      ActionContainer
        ArrangeContainer
          Form

なにやら壮大ですが、実のところ以下のように入れ物だけ作って、必要になった順に実装している感じです。

Type Handled Extends Object
    Handle As HANDLE
End Type
Type BaseWindow Extends Handled
End Type
Type ActionBase Extends BaseWindow
End Type
'以下略

ここに、これまでWindowsAPIと格闘してきた経験と成果を適当に分配していくわけですが、
とりあえず、
・フォームを表示
・ボタンを置ける
・メニューを付ける
・ボタン、メニューにイベントプロシージャを設定できる

このあたりまで実装してみました。今まで書いたソースを全部掲載すると大変なことになってしまうので、使い方を表す簡単なコードだけ掲載します。

#include <VCW/window.bi>

Dim Shared form1 As Form
Dim Shared button1 As CommandButton
Dim Shared mainmenu As Menu
Dim Shared filemenu As Menu

Sub form1_close(param As ActionParam)
    form1.Dispose
    Application.Quit
End Sub

Sub button1_click(param As ActionParam)
    MessageBox(param.hWin, "ボタンがクリックされました", "TestApp", MB_OK)
End Sub

Sub menu_open(param As ActionParam)
    MessageBox(param.hWin, "メニューの開くがクリックされました", "TestApp", MB_OK)
End Sub

Sub menu_quit(param As ActionParam)
    MessageBox(param.hWin, "終了します", "TestApp", MB_OK)
    Application.Quit
End Sub

'フォーム
form1.OnClose = @form1_close
form1.Load
'ボタン
button1 = CommandButton("ボタン1", 10, 10, 100, 25, form1)
button1.OnClick = @button1_click
'メニュー
mainmenu.AddItem("ファイル(&F)").SubMenu = filemenu
filemenu.AddItem("開く(&O)").OnClick = @menu_open
filemenu.AddItem("終了(&Q)").OnClick = @menu_quit
'フォームにメニューを設定
form1.aMenu = mainmenu
'フォーム表示
form1.Visible = true
'メッセージループ
Application.MainLoop

FBシンプル
こんな感じ。

こんなポリシーで増築していけば、欲しかった「VBっぽいコントロールのライブラリ」が出来上がってくるわけですが、まだ足りません。これでもまだ、ちょっと複雑な画面を作ろうとするとコードが凄いことになってしまいます。「VB風」と銘打つからには、この上にビジュアルにコントロールを配置してそれをコードに反映する仕組みが不可欠でしょう。その為には、
1.リソースエディタを流用することにしてリソースファイルからコードに変換できるようにする
2.なんだっけ汎用でGUIをxmlで出力してくれるのがあったのでそれのこのライブラリ用プラグインを作る
3.ライブラリのデバッグも兼ねてGUIエディタを自作する

選択肢はこんなところですが……。
まあ1が楽でしょうけど、コントロールを右や下寄せにするアンカー等リソースにないプロパティは手作業でコードを修正することになります。3を選べばそのあたりは完璧でライブラリの未実装部分も埋まっていくでしょうが、そこまでやるかなって話で……。

Comment






(編集・削除用)

Trackback

http://utau2009.blog114.fc2.com/tb.php/21-74aac1d5

この記事にトラックバック(FC2Blog User)

Copyright © 飴屋/菖蒲

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。