CP5がどんな感じなのかはOverTakerさんにお任せして、こっちはポストCP5を行きます。はい、今日もCP5やSVN最新でもコンパイル・実行できないようなコードを載せていきます。そのうちできるようになると信じています。
まずは空っぽのウィンドウを作ります。
Imports ActiveBasic.Windows.UI
Control.Initialize(GetModuleHandle(0))
Dim f = New Form
f.Create()
Application.Run(f)
End
(画像のウィンドウは小さくしてあります)中心となる処理は3行で済むようになります。これくらいは簡単でないと後が思いやられることになりますからね。
次にHello worldです。まずはPaintイベント (WM_PAINT) の処理を行う関数を書きます。
Dim hdc = e.Handle
Dim hfnt = CreateFont(
MulDiv(24, GetDeviceCaps(hdc, LOGPIXELSY), -72),
0, 0, 0, FW_REGULAR, FALSE, FALSE, FALSE, DEFAULT_CHARSET,
OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY,
FF_SWISS, "Trebuchet MS")
Dim hfntOld = SelectObject(hdc, hfnt)
TextOut(hdc, 10, 10, "Hello world!", 12)
SelectObject(hdc, hfntOld)
DeleteObject(hfnt)
いろいろあって、AB4までのRADのときと違ってHDCをe.Handleで得るようになっています。それ以外の中身は何の変哲もないコードです。そしてさっきの部分を次のように変えます。
Dim f = New Form
f.Create()
f.Text = "Hello world"
f.AddPaintDC(AddressOf(Paint))
Application.Run(f)
End
Paint関数をAddPaintDCでfに「登録」しています。すると、以後Paintイベントが起こると先ほど書いたPaint関数が呼ばれるという具合です。ほかにもAddClick, AddKeyPressなどAB4のRADでイベントとして存在したものは同様に登録可能です。なお、f.Textはウィンドウタイトルです。
スポンサード リンク |
この記事のカテゴリ
- AB ⇒ 3行ウィンドウプログラミング
UI実装を確認したら、骨組みがかなり出来てきていたので驚きました。ある程度動くようになったら、RADツールの改良なども考えたいですね。まずは、標準ライブラリに搭載されることを願います。
ところで、名前空間はSystem.Windows.UIではなく、ActiveBasic.Windows.UIなんですね。