既定の List-View メッセージ処理
このセクションでは、リスト ビュー コントロールによって実行されるウィンドウ メッセージ処理の一覧を示します。
メッセージ処理
次の表では、リスト ビュー コントロールによって実行されるウィンドウ メッセージの処理について説明します。
メッセージ | 実行された処理 |
---|---|
WM_CHAR | 指定した文字で始まるリスト ビューアイテムを検索し、アイテムが見つかった場合は、フォーカスを選択して項目に設定します。 タイムアウト間隔内で受信した複数の文字 (現在は 1 秒で固定) が連結され、リスト ビュー コントロールは結果の文字列で始まる項目を検索します。 |
WM_COMMAND | EN_UPDATE および EN_KILLFOCUS 通知コードを処理し、他のすべての編集コントロール通知を親ウィンドウに転送します。 |
WM_CREATE | WM_NCCREATEに追加の初期化を実行します。 LVS_SHAREIMAGELISTS ウィンドウ スタイルが指定されていない場合、リスト ビュー コントロールは、この時点でアイコンと小さいアイコン画像リストを作成します。 |
WM_DESTROY | WM_CREATE中に割り当てられたリソースを解放します。 |
WM_ERASEBKGND | リスト ビュー コントロールの現在の背景色を使用して、ウィンドウの背景を消去します。 背景色がCLR_NONE値の場合、リスト ビュー コントロールはメッセージを親ウィンドウに転送します。 |
WM_GETDLGCODE | DLGC_WANTTAB値とDLGC_WANTARROWS値の組み合わせを返します。 |
WM_GETFONT | 現在のラベル フォントへのハンドルを返します。 |
WM_HSCROLL | リスト ビュー コントロールを水平方向にスクロールします。 |
WM_KEYDOWN | SPACE キー、ENTER キー、方向キーを処理し、LVN_KEYDOWN 通知コードを親ウィンドウに送信します。 |
WM_KILLFOCUS | フォーカスされたリスト アイテム (存在する場合) を再描画し、NM_KILLFOCUS 通知コードを親ウィンドウに送信します。 |
WM_LBUTTONDBLCLK | 親ウィンドウに通知コード NM_DBLCLK (リスト ビュー) を送信します。 |
WM_LBUTTONDOWN | クリック操作またはドラッグ操作が開始されているかどうかに応じて、さまざまな方法で処理されます。 関連する操作を決定するために、リスト ビュー コントロールは、ボタンが離されるかマウスが移動されるまでモーダル メッセージ ループに入ります。 クリックの場合、リスト ビュー コントロールは、カーソルの位置、Shift キーと Ctrl キーの状態などを考慮して、フォーカスがある項目と選択されている項目を変更する可能性があります。 次に、リスト ビュー コントロールは、親ウィンドウに通知コード NM_CLICK (リスト ビュー) を送信します。 項目の上にドラッグを開始すると、リスト ビュー コントロールが選択され、項目にフォーカスが設定されます。 次に、LVN_BEGINDRAG 通知コードを親ウィンドウに送信します。 親ウィンドウは、ドラッグ操作を実際に実行する役割を担います。 ウィンドウの背景上でドラッグを開始すると、リスト ビュー コントロールは別のモーダル メッセージ ループに入り、ユーザーがマウスをドラッグして四角形を形成できるようにします。 四角形内の項目が選択されます。 |
WM_NCCREATE | 内部データ構造を割り当てて初期化した後、DefWindowProc 関数を呼び出します。 |
WM_NCDESTROY | リスト ビュー コントロールによって割り当てられたリソースを解放します。 LVS_SHAREIMAGELISTS スタイルを使用しない限り、これにはフルサイズの画像リストと小さな画像リストの削除が含まれます。 |
WM_NOTIFY | ヘッダー コントロールの通知コードを処理します。 |
WM_PAINT | 更新リージョン内のすべての項目を表示します。 コールバック項目の場合、コントロールは最初に LVN_GETDISPINFO 通知コードを所有者ウィンドウに送信して表示情報を要求します。 wParam パラメーターが NULL 以外の場合、コントロールは値が HDC であると想定し、そのデバイス コンテキストを使用して描画します。 |
WM_RBUTTONDOWN | コントロールが (NM_CLICK (リスト ビュー)ではなく) 通知コード NM_RCLICK (リスト ビュー) と LVN_BEGINRDRAG 通知コード (LVN_BEGINDRAGではなく) を送信することを除き、WM_LBUTTONDOWN メッセージと同じように処理されます。 コントロールは対応する WM_RBUTTONUP メッセージを処理し、ディスパッチしないことに注意してください。 したがって、アプリケーションは、コントロールをサブクラス化しても、このメッセージを表示できません。 |
WM_SETFOCUS | フォーカスのあるリスト 項目がある場合は再描画し、NM_SETFOCUS 通知コードを親ウィンドウに送信します。 |
WM_SETFONT | 指定したフォント ハンドルを保存し、メッセージがある場合はヘッダー ウィンドウに転送し、新しいフォントを使用して再描画します。 |
WM_SETREDRAW | 再描画のオンとオフを切り替えます。 |
WM_TIMER | 項目ラベルの編集を開始します。 ユーザーがフォーカスされた項目のラベルをクリックすると、リスト ビュー コントロールは編集モードにすぐに入るのではなくタイマーを設定します。 このタイマーを使用すると、ユーザーがラベルをダブルクリック 場合に、リスト ビュー コントロールが編集モード に入らなくても済みます。 |
WM_VSCROLL | リスト ビュー コントロールを垂直方向にスクロールします。 |
WM_WINDOWPOSCHANGED | ウィンドウのスクロール バーを更新します。 現在のビューがアイコンまたは小さいアイコン ビューで、LVS_AUTOARRANGE スタイルが指定されている場合、リスト ビュー コントロールもリスト アイテムを配置します。 |
WM_WININICHANGE | システム メトリックへの変更を処理します。 |