MFCを使ったグラフィックプログラム作成手順 (3)

マウスの操作

マウスクリックによって描画するプログラムを作成する。完成イメージはページの最後にある。

注釈: 前ページの例も含め、イベント駆動型のプログラムとして実現している。イベント駆動型プログラムは起動したらイベントを待って待機 する。様々なイベント(マウスクリックやキーボード押下げなど)に対応する関数(イベントハン ドラ)を用意しておく と、起こったイベントを捉えて対応する関数を呼び出す。関数の実行順はイベントの発生順に依存するため一定ではない。なお実装は、 main関数に相当するものが裏で動いており、これが様々なイベントのチェックを繰り返す形でなされる。Windowsではイベントは、イベ ントメッセージ(ウインドウメッセージ)として伝達される。

例えば、下で実装するOnLbuttonDown関数は、マウスの左ボタンが押下げられたときに呼ばれる関数である。またOnDraw関数 はウインドウ内容 を描画する関数であり、ウインドウの出現や移動時など描画の必要が生じたときに呼ばれる。ウインドウの移動時などに、ウインドウの内容を再描画するのは、OS ではなくアプリケーションの役目である。またInvalidate関数によってウインドウを無効化したときも、描画の必要が生じたとされて OnDraw関数が 呼ばれる。


プログラム作成のために以下の手順を行う。
  1. 新しいプロジェクトを作る。
  2. クリックした点の座標を保持する変数mPointを用意する。
  3. マウス左クリックで発生するWM_LBUTTONDOWNと、それによって呼び出される関数OnLButtonDownを 関連付ける。
  4. 関数OnLbuttonDownには、クリック点座標をmPointに保持してから再描画を要求するコードを記述する。
  5. 描画関数OnDrawには、mPointに向かう直線を描くコードを記述する。

以下にその詳細な手順を記す。