今回はマウス入力をやってみます

マウスホイールを扱うにはウィンドウズのバージョンを指定しないといけないので
プログラムの先頭に(正確には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);
	}

デバックコンソールを表示しておきます
実際に動かすとマウスの情報が
色々と取れるようになったことがわかるでしょう
mouse.GIF

全ソースコードは下から
filemain.cpp

選択肢 投票
(^ω^)やったお 0  
何これwww意味不すぎwww 2  
。(`ω´#)。あぁん?最近、だらしねぇな 0  

添付ファイル: filemain.cpp 609件 [詳細] filemouse.GIF 490件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2019-02-12 (火) 15:28:48