読者です 読者をやめる 読者になる 読者になる

CWnd::OnLButtonDown

MFC Sample

CWnd::OnLButtonDownは、ウィンドウ上でマウスの左ボタンが押された時(WM_LBUTTONDOWN)の処理を記述するためのメンバ関数(メッセージハンドラ)・・・。

CWnd::OnLButtonDown

1つ目の引数nFlagsには合わせて押されたボタンや仮想キーの情報、2つ目の引数pointにはCPoint型で押された位置座標が渡される・・・。

WindowsAPIのWM_LBUTTONDOWNの時のように、押された位置座標を表示してみる・・・。

CFrameWnd_.hでは、

押された位置座標を格納するメンバ変数m_x, m_y・・・。

OnPaintに加えて、OnLButtonDownをオーバーライド・・・。

CFrameWnd_.cppでは、

ON_WM_LBUTTONDOWN()をメッセージマップに追加・・・。

コンストラクタで位置座標を0に初期化・・・。

左ボタンが押されると、OnLButtonDownが呼ばれる・・・。
渡されたpointのx, yをそれぞれm_x, m_yに格納・・・。
そのあと、Invalidateを呼んで更新要求・・・。
(InvalidateRectのクライアント領域全体バージョン・・・。)

でOnPaintで、

cstrPointを用意し、Formatで"(x, y) = (%d, %d)"形式で座標(m_x, m_y)を文字列として格納・・・。
そのあと、cstrPointをdc.TextOutで描画・・・。

実行すると、

f:id:BG1:20150424120601p:plain

左上に座標が出ている・・・。初期化されているので(0, 0)・・・。
やや左上のほうで左クリック・・・。

f:id:BG1:20150424120632p:plain

(126, 96)の位置で左クリックされたことがわかる・・・。
右下のほうでも、

f:id:BG1:20150424120752p:plain

(908, 434)で左クリックされたことがわかる・・・。

Sample/CWinApp_.h at master · bg1bgst333/Sample · GitHub
Sample/CWinApp_.cpp at master · bg1bgst333/Sample · GitHub
Sample/CFrameWnd_.h at master · bg1bgst333/Sample · GitHub
Sample/CFrameWnd_.cpp at master · bg1bgst333/Sample · GitHub