スケルトンプログラムの導入、ウィンドウクラスとメッセージハンドラ -004-
前へ TOPへ 次へ

スケルトンプログラムをいじってみよう

メッセージボックスの表示

スケルトンプログラムのウィンドウ関数内に以下のようなイベントを加えてみよう。ウィンドウ内で左クリックを押されると、メッセージボックスが表示されるようになるはずである。 MessageBoxはちょっとしたデバッグ等にも使えて、とても便利な関数である。

    第1引数
    HWND(ウィンドウハンドル)型の変数で,表示したいウィンドウのハンドルが入る
    第2引数
    メッセージボックス内に表示したい文字列の入る文字配列
    第3引数
    メッセージボックスのタイトルバーに表示したい文字列の入る文字配列
    第4引数
    メッセージボックス内の確認ボタンの種類,MB_OKはボタン上に「OK」なる文字が提示される.(この他にMB_YESNO(YESとNOの2ボタン),MB_OKCANCEL(OKとキャンセルの2ボタン)などがある)

ウィンドウ内への文字列描画

ウィンドウ内に文字列を表示させるサンプルである。 WM_PAINTは、ウィンドウが生成されたときや、他のウィンドウなどが重なって隠れていた部分が再び現れて再描画する際に送られてくるメッセージである。 BeginPaint()でデバイスコンテキストを取得し、このデバイスコンテキストに対して文字色の指定、そして文字列描画を行う。 描画処理が終わったらEndPaint()を呼ばなくてはならない。

ボタンの作成

今度はウィンドウ内にボタンをつくってみよう。 そしてボタンが押されたら、適当なメッセージボックスを表示させる処理を追加しよう。 ボタンが押されるとWM_COMMANDにメッセージが送られる。 このとき変数wP値の下位2bytesには、どのボタンが押されたかという識別子が入っている。 以下のサンプルでは、あらかじめボタンの識別子をプログラムの先頭で

のように定義しておく必要がある(識別子の値は適当で構わない)。
以下の例では、WinMain関数内でウィンドウを作成(CreateWindow)した直後に、

  1. OSから通知されるメッセージ「WM_CREATE」が入ってくる。
  2. このメッセージが来たら、ボタンウィンドウを識別子IDB_TESTで作成して表示しておく。
  3. そのうちにユーザがこのボタンウィンドウをクリックすると、OS経由で「WM_COMMAND」メッセージが発行される。
  4. やがてウィンドウ処理(WindowProc)関数に通知されると(MessageBox関数により)メッセージボックスが表示され,「YES」と「NO」の2つのボタンのいずれかを押すように催促される。
  5. もしもYESボタンが押されるとDestroyWindow関数がコールされもとのウィンドウが閉じられてプログラムが終了する。


前へ TOPへ 次へ