- 追加された行はこの色です。
- 削除された行はこの色です。
今回はマウス入力をやってみます
マウスホイールを扱うにはウィンドウズのバージョンを指定しないといけないので
プログラムの先頭に(正確にはwindows.h、windowsx.hの前に)指定してやる必要があります
// ウィンドウズバージョン指定
#define _WIN32_WINNT 0x0500
---------------------------------------------
・左ボタン押下
・右ボタン押下
・ホイールボタン押下
・左ボタン押上
・右ボタン押上
・ホイールボタン押上
・マウス移動
・マウスホイール回転量
・左ボタンダブルクリック
・右ボタンダブルクリック
・左ボタン押下 WM_LBUTTON
・右ボタン押下 WM_RBUTTONDOWN
・ホイールボタン押下 WM_MBUTTONDOWN
・左ボタン押上 WM_RBUTTONUP
・右ボタン押上 WM_MBUTTONUP
・ホイールボタン押上 WM_MBUTTONUP
・マウス移動 WM_MOUSEMOVE
・マウスホイール回転量 WM_MOUSEWHEEL
・左ボタンダブルクリック WM_LBUTTONDBLCLK
・右ボタンダブルクリック WM_RBUTTONDBLCLK
について取り扱ってみます
//-------------------------------------------------------//
// マウス左ボタン押下メッセージ処理
//
// 引数: hWnd ウィンドウハンドル
// isDoubleClick ダブルクリックされたか
// x,y 押された位置
// keyFlags フラグ
//-------------------------------------------------------//
void OnLButtonDown(HWND hWnd, BOOL isDoubleClick, int x, int y, UINT keyFlags){
if(isDoubleClick)
printf("左ダブルクリック x = %d,y = %d\n",x,y);
else
printf("左クリックダウン x = %d,y = %d\n",x,y);
}
//-------------------------------------------------------//
// マウス右ボタン押下メッセージ処理
//
// 引数: hWnd ウィンドウハンドル
// isDoubleClick ダブルクリックされたか
// x,y 押された位置
// keyFlags フラグ
//-------------------------------------------------------//
void OnRButtonDown(HWND hWnd, BOOL isDoubleClick, int x, int y, UINT keyFlags){
if(isDoubleClick)
printf("右ダブルクリック x = %d,y = %d\n",x,y);
else
printf("右クリックダウン x = %d,y = %d\n",x,y);
}
//-------------------------------------------------------//
// マウス真ん中ボタン押下メッセージ処理
//
// 引数: hWnd ウィンドウハンドル
// isDoubleClick ダブルクリックされたか
// x,y 押された位置
// keyFlags フラグ
//-------------------------------------------------------//
void OnMButtonDown(HWND hWnd, BOOL isDoubleClick, int x, int y, UINT keyFlags){
printf("真ん中クリックダウン x = %d,y = %d\n",x,y);
}
//-------------------------------------------------------//
// マウス左ボタン押上メッセージ処理
// ウィンドウ外で離された場合検知するには
// SetCapture関数とReleaseCapture関数を使うこと
//
// 引数: hWnd ウィンドウハンドル
// x,y 離された位置
// keyFlags フラグ
//-------------------------------------------------------//
void OnLButtonUp(HWND hWnd,int x, int y, UINT keyFlags){
printf("左クリックアップ x = %d,y = %d\n",x,y);
}
//-------------------------------------------------------//
// マウス右ボタン押上メッセージ処理
// ウィンドウ外で離された場合検知するには
// SetCapture関数とReleaseCapture関数を使うこと
//
// 引数: hWnd ウィンドウハンドル
// x,y 離された位置
// keyFlags フラグ
//-------------------------------------------------------//
void OnRButtonUp(HWND hWnd,int x, int y, UINT keyFlags){
printf("右クリックアップ x = %d,y = %d\n",x,y);
}
//-------------------------------------------------------//
// マウス真ん中ボタン押上メッセージ処理
// ウィンドウ外で離された場合検知するには
// SetCapture関数とReleaseCapture関数を使うこと
//
// 引数: hWnd ウィンドウハンドル
// x,y 離された位置
// keyFlags フラグ
//-------------------------------------------------------//
void OnMButtonUp(HWND hWnd,int x, int y, UINT keyFlags){
printf("真ん中クリックアップ x = %d,y = %d\n",x,y);
}
//-------------------------------------------------------//
// マウス移動メッセージ処理
//
// 引数: hWnd ウィンドウハンドル
// x,y マウスカーソル位置
// keyFlags フラグ
//-------------------------------------------------------//
void OnMouseMove(HWND hwnd, int x, int y, UINT keyFlags){
printf("マウス位置 x = %d,y = %d\n",x,y);
}
//-------------------------------------------------------//
// マウスホイールメッセージ処理
//
// 引数: hWnd ウィンドウハンドル
// xPos,yPos マウスカーソル位置
// zDelta ホイ−ル回転量(正:奥方向回転、負:手前方向回転)
// fwFlags フラグ
//-------------------------------------------------------//
void OnMouseWheel(HWND hWnd, int xPos, int yPos, int zDelta, UINT fwKeys){
printf("ホイール回転量 zDelta = %d\n",zDelta);
}
//------------------------------------------------------//
// ウィンドウ破棄メッセージ処理
//
// 引数: hWnd ウィンドウハンドル
//------------------------------------------------------//
void OnDestroy(HWND hWnd){
PostQuitMessage(0);
}
//-----------------------------------------------------//
// ウィンドウプロシージャ
// デフォルトの処理はDefWindowProc関数で行う
//
// 引数: hWnd ウィンドウハンドル
// msg メッセージ
// wParam パラメータ
// lParam パラメータ
//
// 戻り値:処理結果
//-----------------------------------------------------//
LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam){
switch(msg){
// マウス
HANDLE_MSG(hWnd,WM_LBUTTONDOWN,OnLButtonDown);
HANDLE_MSG(hWnd,WM_RBUTTONDOWN,OnRButtonDown);
HANDLE_MSG(hWnd,WM_MBUTTONDOWN,OnMButtonDown);
HANDLE_MSG(hWnd,WM_LBUTTONDBLCLK,OnLButtonDown);
HANDLE_MSG(hWnd,WM_RBUTTONDBLCLK,OnRButtonDown);
HANDLE_MSG(hWnd,WM_LBUTTONUP,OnLButtonUp);
HANDLE_MSG(hWnd,WM_RBUTTONUP,OnRButtonUp);
HANDLE_MSG(hWnd,WM_MBUTTONUP,OnMButtonUp);
HANDLE_MSG(hWnd,WM_MOUSEMOVE,OnMouseMove);
HANDLE_MSG(hWnd,WM_MOUSEWHEEL,OnMouseWheel);
HANDLE_MSG(hWnd,WM_DESTROY,OnDestroy);
}
return DefWindowProc(hWnd, msg, wParam, lParam);
}
デバックコンソールを表示しておきます
実際に動かすとマウスの情報が
色々と取れるようになったことがわかるでしょう
&ref(mouse.GIF);
#vote((^ω^)やったお[0],何これwww意味不すぎwww[0],。(`ω´#)。あぁん?最近、だらしねぇな[0])
全ソースコードは下から
&ref(main.cpp);
|(^ω^)やったお|0|
|何これwww意味不すぎwww|2|
|。(`ω´#)。あぁん?最近、だらしねぇな|0|