
まずは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_PAINTとWM_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ボタンを持っているメッセージボックス
と指定しています
実行結果
