その7 マウス入力と判定

まずはWindowsアプリケーションを作成します



新規プロジェクトの作成、から
「Windowsデスクトップアプリケーション」
を選択してください




うお・・
これはちょっと・・
いきなりハードすぎやしませんか・・




全てを理解しようとすればキツいです

が、今は全部理解する必要はありません



実はこれ、
自動でWindowsアプリを作ってくれているんです




ちなみに何もいじっていない
このプログラムを動かしてみると・・



え?・・
あ、ほんとだ・・出来てる




そうです

要は、このプログラムのどこをいじれば
思い通りの事が出来るか、です






覚えなくても大丈夫ですが
一応、プログラムの概要です



上のほうに
intAPIENTRYwWinMain()という
C言語でいうMain()関数に当たるものがあります



この中でまずATOMMyRegisterClass()関数が呼び出され
Windowの形状などが決められています
(形状などを変更したいときはここ)



次にBOOLInitInstance()関数が呼ばれ
初期化がされます
(Windowが表示される前にやりたいことがあればここ)



そしてwhile(GetMessage())で
Windowが消滅するまでWindowの信号を受信しています

受信した信号を処理するのが
LRESURTCALLBACKWndProc()関数です
(今回はこの関数の中で処理をします)



その下にあるINT_PTRCALLBACKAbout()
バージョン情報を表示したりする関数です





あの・・
もう大丈夫です、お腹一杯です・・



これは、どこをいじるのかの前置きなので
本当に覚えなくて良いです

そのうち自然に理解できると思います







では、実際にこのプログラムをいじっていきます




この関数内では
このWindowに飛んできた信号(ウィンドウメッセージ)
を受信して、その処理を行っています




WM_COMMAND
では、Windowのメニューバーが選択された時

「ヘルプ」でバージョン情報表示
などの処理を行っています



WM_PAINT
は、Windowを再描画する必要がある時
に呼ばれます



WM_DESTROY
は、Windowが無くなる時、終了処理です





今回はマウスクリックによる入力と判定なので
WM_LBUTTONDOWN
(マウスの左ボタンが、下がった時)
というメッセージを新たに拾う処理を作ります



ここがいいかな

WM_PAINTWM_DESTROYの間に
上のように作ってみてください




そして次に、クリックされた場所(座標)を拾います






この3行を足してみて下さい



まず、POINT
クリックされた座標を格納するための
WindowsAPIの構造体です
変数群、とでも考えてもらえればOKです



GetCursorPos()は、
現在のマウスカーソルの位置をPOINT構造体に格納する
WindowsAPI関数です



ScreenToClient()は、
絶対座標(TV画面の座標)から
Windowの座標に変換する
こちらもWindowsAPI関数です




WindowsAPIには
様々な関数や構造体、メッセージなどが存在しますが
こうした便利な関数が使えるとだけ理解すれば大丈夫です

使いたい時に、使いたいAPIを覚えればいいのです



さて、最後です

下の3行を追加してください



wchar_t
後のMessageBox関数で使用するために合わせた
char型と思って下さい



次のswprintf_s()では
クリックされた座標が格納されたPOINT構造体pt
X座標pt.x Y座標pt.y
文字列に変換しています



そして、その文字列を
MessageBox関数で表示させています

MB_OK
OKボタンを持っているメッセージボックス
と指定しています






実行結果



おお!!!
ついにWindowsアプリが出来た!!





お疲れ様でした

今章は急にプログラミングのハードルが上がったので
大変だったと思います



でもあなたはこれで、
Windowの中のどこかがクリックされた時の
反応を返せるようになりました

クリックされた方向へキャラクターを動かしたりと
無限の可能性が広がっていくと思います





 おまけ 



VisualStudioの一番右の方に
「リソースビュー」
というものがあると思います



こちらのDialogを選択して開くと
Windowで「ヘルプ」を押した時に表示される
バージョン情報をいじくることができます





あなたが作ったプログラムです

著作権表記などしてみてはいかがでしょう







次章は
「ビットマップの表示」
です


徐々にプログラミングは複雑となっていきますが
RPGゲームの仕組みは分かっているので
勇み足でいきましょう!