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はウィンドウタイトルです。

スポンサード リンク

この記事のカテゴリ

  • ⇒ 3行ウィンドウプログラミング