[PR]

リストボックスのダブルクリックを処理する

戻る

 リストボックスコントロールは、デフォルトではダブルクリックを親ウィンドウに通知してくれない。
 サブクラス化を行い、ウィンドウ関数に送られてきたメッセージ WM_LBUTTONDBLCLK を処理することで対応できる。

リストボックスのダブルクリックを親ウィンドウに通知する例

// サブクラス化
WNDPROC OriginalListBoxProc = SubclassWindow( hListBox, ListBoxProc );
// ウィンドウ関数
LRESULT APIENTRY ListBoxProc( HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam )
{
	// UINT uMsg; はリストボックスに送られてきたメッセージの値
	switch( uMsg )
	{
		case WM_LBUTTONDBLCLK:
		{
			// ダブルクリックを親ウィンドウに通知する
			NMHDR nmh;
			memset( &nmh, 0, sizeof( nmh ) );
			nmh.code     = NM_DBLCLK;
			nmh.idFrom   = GetDlgCtrlID( hWnd );
			nmh.hwndFrom = hWnd;
			HWND hParent = GetParent( hWnd );
			return SendMessage( hParent, WM_NOTIFY, nmh.idFrom, (LPARAM)&nmh );
		}

	…… 省略 ……

}//ListBoxProc

関連

ウィンドウハンドルにデータを関連付ける


Google
ご意見・ご感想をお聞かせ下さい。匿名で送信できます。

 * 返信が必要な場合には postmaster@katsura-kotonoha.sakura.ne.jp へ直接メールしてください。

水無瀬 優 postmaster@katsura-kotonoha.sakura.ne.jp
IDGは全世界85カ国でIT関連雑誌を発行する出版社です。