Tree-View コントロールについて
ツリー ビュー コントロールは、ドキュメント内の見出し、インデックス内のエントリ、ディスク上のファイルとディレクトリなどの項目の階層リストを表示するウィンドウです。 各項目は、ラベルとオプションのビットマップ イメージで構成され、関連付けられているサブ項目の一覧を含むことができます。 項目をクリックすると、ユーザーは関連するサブ項目の一覧を展開または折りたたむことができます。
次の図は、ルート ノード、展開されたノード、および折りたたまれたノードを含む単純なツリー ビュー コントロールを示しています。 コントロールは、選択した項目に 1 つのビットマップを使用し、他の項目には別のビットマップを使用します。

ツリー ビュー コントロールを作成した後、コントロールにメッセージを送信することで、項目を追加、削除、配置、またはその他の操作を行います。 各メッセージには、メッセージを明示的に送信する代わりに使用できる 1 つ以上の対応するマクロがあります。
このセクションでは、次のトピックについて説明します。
- ツリー ビュー スタイル
- 親項目と子項目
- 項目ラベル
- ツリー ビュー ラベルの編集
- ツリー ビュー項目の位置
- ツリー ビュー項目の状態の概要
- 項目の選択
- アイテム情報
- ツリー ビュー のイメージ リスト
- ドラッグ アンド ドロップ操作
- ツリー ビュー コントロールの通知メッセージ
- 既定のTree-View制御メッセージ処理
- 関連トピック
スタイルのTree-View
ツリー ビュー スタイルは、ツリー ビュー コントロールの外観の側面を制御します。 初期スタイルは、ツリー ビュー コントロールを作成するときに設定します。 GetWindowLong 関数と SetWindowLong 関数を使用してツリー ビュー コントロールを作成した後、スタイルを取得および変更できます。
TVS_HASLINES スタイルは、次の図に示すように、子項目を親項目にリンクする線を描画することで、ツリー ビュー コントロールの階層のグラフィック表現を強化します。

それ自体では、このスタイルは階層のルートに線を描画しません。 そのためには、 TVS_HASLINES スタイルと TVS_LINESATROOT スタイルを組み合わせる必要があります。 結果を次の図に示します。

ユーザーは、親項目をダブルクリックすることで、その子項目のリストを展開または折りたたみできます。 TVS_HASBUTTONS スタイルを持つツリー ビュー コントロールは、各親項目の左側にボタンを追加します。 ユーザーは、親項目をダブルクリックして子を展開または折りたたむ代わりに、ボタンを 1 回クリックできます。 TVS_HASBUTTONS は、階層のルートにある項目にボタンを追加しません。 そのためには、TVS_HASLINES、TVS_LINESATROOT、TVS_HASBUTTONSを組み合わせる必要があります。 このスタイルの組み合わせを次の図に示します。

TVS_CHECKBOXES スタイルでは、各項目の横にチェック ボックスが作成されます。 チェックボックス スタイルを使用する場合は、ツリー ビュー コントロールを作成した後、およびツリーに設定する前に、 TVS_CHECKBOXES スタイル ( SetWindowLong を使用) を設定する必要があります。 それ以外の場合は、タイミングの問題に応じて、チェック ボックスがオフになっている可能性があります。 次の図は、チェック ボックスのスタイルを示しています。

TVS_FULLROWSELECT スタイルでは、項目自体だけでなく、コントロールの全幅に対して選択範囲の強調表示が拡張されます。 次の図は、このスタイルを示しています。

TVS_EDITLABELS スタイルを使用すると、ユーザーはツリー ビュー項目のラベルを編集できます。 ラベルの編集の詳細については、「 ツリー ビュー ラベルの編集」を参照してください。
これらのスタイルとその他のスタイルの詳細については、「 ツリー ビュー コントロール ウィンドウスタイル」を参照してください。
親項目と子項目
ツリー ビュー コントロール内の任意の項目に、 子項目と呼ばれるサブ項目の一覧を関連付けることができます。 1 つ以上の子項目を持つ項目を 親項目と呼びます。 子項目は親項目の下に表示され、親の下位であることを示すためにインデントされます。 階層の上部に親のない項目が表示され、 ルート項目と呼ばれます。
ツリー ビュー コントロールに項目を追加するには、 TVM_INSERTITEM メッセージをコントロールに送信します。 メッセージは、項目を一意に識別する HTREEITEM 型へのハンドルを返します。 項目を追加するときは、新しい項目の親項目へのハンドルを指定する必要があります。 TVINSERTSTRUCT 構造体で親項目ハンドルの代わりに NULL またはTVI_ROOT値を指定した場合、項目はルート項目として追加されます。
いつでも、親項目の子項目のリストの状態を展開または折りたたみにすることができます。 状態が展開の場合、子項目は親項目の下に表示されます。 それが折りたたみの場合、子項目は表示されません。 ユーザーが親アイテムをダブルクリックしたとき、または親アイテムに関連付けられているボタンをクリックしたときに、親アイテムが TVS_HASBUTTONS スタイルの場合、リストは展開された状態と折りたたまれた状態を自動的に切り替えます。 アプリケーションは、 TVM_EXPAND メッセージを使用して子項目を展開または折りたたむことができます。
ツリー ビュー コントロールは、親アイテムの子項目の一覧が展開または折りたたまれるときに、親ウィンドウに TVN_ITEMEXPANDING 通知メッセージを送信します。 この通知により、アプリケーションは、変更を防止したり、子項目の一覧の状態に依存する親アイテムの属性を設定したりできます。 リストの状態を変更した後、ツリー ビュー コントロールは親ウィンドウに TVN_ITEMEXPANDED 通知メッセージを送信します。
子項目のリストが展開されると、親項目を基準にインデントされます。 TVM_SETINDENT メッセージを使用してインデントの量を設定したり、TVM_GETINDENT メッセージを使用して現在の量を取得したりできます。
ツリー ビュー コントロールは、ツリー ビュー コントロールを作成するプロセスのヒープから割り当てられたメモリを使用します。 ツリー ビューの項目の最大数は、ヒープで使用可能なメモリの量に基づいています。
項目ラベル
通常、ツリー ビュー コントロールに項目を追加するときに、項目のラベルのテキストを指定します。 TVM_INSERTITEM メッセージには、ラベルのテキストを含む文字列を含む、項目のプロパティを定義する TVITEM 構造体が含まれています。
ツリー ビュー コントロールは、各項目を格納するためのメモリを割り当てます。項目ラベルのテキストは、このメモリのかなりの部分を占めます。 アプリケーションがツリー ビュー コントロール内の文字列のコピーを保持している場合は、実際の文字列をツリー ビューに渡す代わりに、TVITEM の pszText メンバーにLPSTR_TEXTCALLBACK値を指定することで、コントロールのメモリ要件を減らすことができます。 LPSTR_TEXTCALLBACKを使用すると、項目を再描画する必要がある場合は常に、ツリー ビュー コントロールが親ウィンドウから項目のラベルのテキストを取得します。 テキストを取得するために、ツリー ビュー コントロールは、NMTVDISPINFO 構造体のアドレスを含むTVN_GETDISPINFO通知メッセージを送信します。 親ウィンドウは、含まれている構造体の適切なメンバーを埋める必要があります。
Tree-Viewラベル編集
ユーザーは、 TVS_EDITLABELS スタイルを持つツリー ビュー コントロール内の項目のラベルを直接編集できます。 ユーザーは、フォーカスがある項目のラベルをクリックして編集を開始します。 アプリケーションは、 TVM_EDITLABEL メッセージを使用して編集を開始します。 ツリー ビュー コントロールは、編集の開始時と、編集がキャンセルまたは完了したときに親ウィンドウに通知します。 編集が完了すると、必要に応じて、親ウィンドウがアイテムのラベルを更新します。
ラベルの編集が開始されると、ツリー ビュー コントロールは親ウィンドウ にTVN_BEGINLABELEDIT 通知メッセージを送信します。 この通知を処理することで、アプリケーションは一部のラベルの編集を許可し、他のラベルの編集を防ぐことができます。 0 を返す場合は編集でき、0 以外の値を返しても編集できません。
ラベルの編集が取り消されるか完了すると、ツリー ビュー コントロールは親ウィンドウ にTVN_ENDLABELEDIT 通知メッセージを送信します。 lParam パラメーターは、NMTVDISPINFO 構造体のアドレスです。 item パラメーターは、 項目 を識別し、編集されたテキストを含む TVITEM 構造体です。 新しいラベルを保持する場合は、親ウィンドウでアイテムのラベルを更新します。 編集が取り消された場合、TVITEM の pszText メンバーは 0 です。
ラベルの編集中、通常はTVN_BEGINLABELEDIT通知メッセージに応答して、 TVM_GETEDITCONTROLメッセージを 使用してラベル編集に使用される編集コントロールへのハンドルを取得できます。 編集コントロールに EM_SETLIMITTEXT メッセージを送信して、ユーザーが編集コントロールを入力またはサブクラス化して無効な文字をインターセプトして破棄できるテキストの量を制限できます。 ただし、編集コントロールは、TVN_BEGINLABELEDIT送信 後 にのみ表示されることに注意してください。
Tree-View項目の位置
項目の初期位置は、 TVM_INSERTITEM メッセージを使用して項目がツリー ビュー コントロールに追加されるときに設定されます。 メッセージには、親項目へのハンドルと、その後に新しい項目を挿入する項目へのハンドルを指定する TVINSERTSTRUCT 構造体が含まれています。 2 番目のハンドルは、指定された親の子項目、または TVI_FIRST、TVI_LAST、またはTVI_SORTのいずれかの値を識別する必要があります。
TVI_FIRSTまたはTVI_LASTを指定すると、ツリー ビュー コントロールは、指定された親項目の子項目のリストの先頭または末尾に新しい項目を配置します。 TVI_SORTを指定すると、ツリー ビュー コントロールは、項目ラベルのテキストに基づいて、子項目の一覧にアルファベット順で新しい項目を挿入します。
TVM_SORTCHILDREN メッセージを使用して、親アイテムの子項目の一覧をアルファベット順 に 配置できます。 メッセージには、指定された親項目から派生するすべての子項目のレベルもアルファベット順に並べ替えられるかどうかを指定するパラメーターが含まれています。
TVM_SORTCHILDRENCB メッセージを使用すると、定義した条件に基づいて子アイテムを並べ替えることができます。 このメッセージを使用する場合は、2 つの子項目の相対順序を決定する必要があるときに、ツリー ビュー コントロールが呼び出すことができるアプリケーション定義のコールバック関数を指定します。 コールバック関数は、比較対象の項目に対して 2 つの 32 ビット アプリケーション定義値と、 TVM_SORTCHILDRENCB送信時に指定する 3 番目の 32 ビット値を受け取ります。
Tree-View項目の状態の概要
ツリー ビュー コントロールの各項目は、現在の状態です。 各項目の状態情報には、一連のビット フラグと、アイテムの状態イメージとオーバーレイ イメージを示すイメージ リスト インデックスが含まれます。 ビット フラグは、項目が選択されているかどうか、無効になっているか、展開されているかなどを示します。 ほとんどの場合、ツリー ビュー コントロールは、項目の選択などのユーザー アクションを反映するように項目の状態を自動的に設定します。 ただし、TVM_SETITEM メッセージを使用してアイテムの状態を設定したり、 TVM_GETITEMメッセージを 使用してアイテムの現在の状態を取得したりすることもできます。 項目の状態の完全な一覧については、「 ツリー ビュー コントロール項目の状態」を参照してください。
項目の現在の状態は、TVITEM 構造体の状態メンバーによって指定されます。 ツリー ビュー コントロールでは、項目の選択や項目へのフォーカスの設定など、ユーザーアクションを反映するように項目の状態が変更される場合があります。 さらに、アプリケーションは、項目の状態を変更して、項目を無効または非表示にしたり、オーバーレイ イメージまたは状態イメージを指定したりすることがあります。
項目の状態を指定または変更すると、TVITEM の statemask メンバーは、設定する状態ビットを指定し、状態メンバーにはそれらのビットの新しい値が含まれます。
アイテムのオーバーレイ イメージを設定するには、 statemask に TVIS_OVERLAYMASK 値を含める必要があります。また、 STATE には 、INDEXTOOVERLAYMASK マクロを使用して、8 ビット左にシフトされたオーバーレイ イメージの 1 から始まるインデックスを含める必要があります。 オーバーレイ イメージを指定しない場合は、インデックスを 0 にできます。
状態イメージは、アプリケーション定義の状態を示す項目のアイコンの横に表示されます。 状態イメージは、TVM_SETIMAGELIST メッセージを送信することによって指定された状態イメージ リストに含まれます。 項目の状態イメージを設定するには、TVITEM 構造体の statemask メンバーにTVIS_STATEIMAGEMASK値を含めます。 構造体の 状態 メンバーのビット 12 から 15 は、描画するイメージの状態イメージ リスト内のインデックスを指定します。
状態イメージ インデックスを設定するには、 INDEXTOSTATEIMAGEMASK を使用します。 このマクロはインデックスを受け取り、ビット 12 から 15 を適切に設定します。 項目に状態イメージがないことを示すには、インデックスを 0 に設定します。 この規則は、状態イメージ リスト内のイメージ 0 を状態イメージとして使用できないことを意味します。 状態メンバーのビット 12 から 15 を分離するには、TVIS_STATEIMAGEMASK マスクを使用します。 オーバーレイイメージと状態イメージの詳細については、「 ツリービューイメージリスト」を参照してください。
項目の選択
ツリー ビュー コントロールは、TVN_SELCHANGINGと TVN_SELCHANGED 通知メッセージを送信することで、選択項目が別の項目に変更されたときに親ウィンドウ に 通知します。 どちらの通知にも、変更がマウス クリックの結果かキーボード操作の結果かを指定する値が含まれます。 選択項目の情報と、選択解除された項目の情報も含まれます。 この情報を使用すると、項目の選択状態に依存する項目属性を設定できます。 TVN_SELCHANGINGに応答して TRUE を返した場合、選択内容が変更されるのを防ぎ、 FALSE を 返す場合は変更が許可されます。
アプリケーションは、 TVM_SELECTITEM メッセージを送信することによって選択を変更できます。
アイテム情報
ツリー ビュー コントロールは、コントロール内の項目に関する情報を取得する多数のメッセージをサポートします。
TVM_GETITEM メッセージは、アイテムのハンドルと属性を取得できます。 アイテムの属性には、現在の状態、項目の選択されたイメージと選択されていないビットマップ イメージのコントロールのイメージ リスト内のインデックス、項目に子項目があるかどうかを示すフラグ、アイテムのラベル文字列のアドレス、およびアイテムのアプリケーション定義の 32 ビット値が含まれます。
TVM_GETNEXTITEM メッセージは、現在のアイテムに対して指定されたリレーションシップを持つツリー ビュー項目を取得します。 メッセージは、アイテムの親、次または前に表示される項目、最初の子項目などを取得できます。
TVM_GETITEMRECT メッセージは、ツリー ビュー項目の外接する四角形を取得します。 TVM_GETCOUNTメッセージとTVM_GETVISIBLECOUNT メッセージは、ツリー ビュー コントロール内の項目の数と、ツリー ビュー コントロールのウィンドウに完全に表示できる項目の数をそれぞれ取得します。 TVM_ENSUREVISIBLE メッセージを使用して、特定の項目を確実 に 表示できます。
Tree-View イメージ リスト
ツリー ビュー コントロールの各項目には、4 つのビットマップイメージを関連付けることができます。
- アイテムを選択すると、開いているフォルダーなどの画像が表示されます。
- アイテムが選択されていない場合に表示される閉じたフォルダーなどの画像。
- 選択したイメージまたは選択されていないイメージの上に透過的に描画されるオーバーレイ イメージ。
- 状態イメージ。選択されたイメージまたは選択されていないイメージの左側に表示される追加の画像です。 チェック ボックスやクリアされたチェック ボックスなどの状態イメージを使用して、アプリケーション定義の項目の状態を示すことができます。
既定では、ツリー ビュー コントロールには項目イメージは表示されません。 項目イメージを表示するには、イメージ リストを作成し、コントロールに関連付ける必要があります。 イメージ リストの詳細については、「 イメージ リスト」を参照してください。
ツリー ビュー コントロールには、通常のイメージ リストと状態イメージ リストという 2 つのイメージ リストを含めることができます。 通常のイメージ リストには、選択された、選択されていない、オーバーレイの画像が格納されます。 状態イメージ リストには、状態イメージが格納されます。 ImageList_Create関数を使用してイメージ リストを作成し、他のイメージ リスト関数を使用してビットマップをイメージ リストに追加します。 次に、イメージ リストをツリー ビュー コントロールに関連付けるには、 TVM_SETIMAGELIST メッセージを使用します。 TVM_GETIMAGELIST メッセージは、ツリー ビュー コントロールのイメージ リストのいずれかに対するハンドルを取得します。 このメッセージは、一覧に画像を追加する必要がある場合に便利です。
選択したイメージと選択されていないイメージに加えて、ツリー ビュー コントロールの通常のイメージ リストには、最大 4 つのオーバーレイ 画像を含めることができます。 オーバーレイ 画像は、1 から始まるインデックスによって識別され、選択されたイメージと選択されていないイメージの上に透過的に描画されるように設計されています。 オーバーレイ マスク インデックスを通常のイメージ リストのイメージに割り当てるには、 ImageList_SetOverlayImage 関数を呼び出します。
既定では、選択した状態と選択されていない状態の両方について、すべての項目に標準イメージ リストの最初の画像が表示されます。 また、既定では、アイテムにはオーバーレイ画像や状態イメージは表示されません。 TVM_INSERTITEMまたはTVM_SETITEM メッセージを送信することで、アイテムの既定の動作を変更できます。 これらのメッセージでは 、TVITEM 構造体を使用して、項目のイメージ リスト インデックスを指定します。
項目の選択されたイメージと選択されていないイメージを指定するには、TVITEM 構造体のマスク メンバーにTVIF_SELECTEDIMAGEビットとTVIF_IMAGE ビットを設定し、iSelectImage メンバーと iImage メンバーのコントロールの通常のイメージ リストのインデックスを指定します。 または、インデックスを指定する代わりに、 iSelectImage と iImage でI_IMAGECALLBACK値を指定することもできます。 これにより、項目が再描画されるたびに、コントロールはイメージ リスト インデックスの親ウィンドウに対してクエリを実行します。 コントロールは、インデックスを取得するために TVN_GETDISPINFO 通知メッセージを送信します。
オーバーレイ イメージを項目に関連付けるには、INDEXTOOVERLAYMASK マクロを使用して、アイテムの TVITEM 構造体の状態メンバーにオーバーレイ マスク インデックスを指定します。 stateMask メンバーのTVIS_OVERLAYMASK ビットも設定する必要があります。 オーバーレイ マスク インデックスは 1 から始まります。インデックスが 0 の場合は、オーバーレイ イメージが指定されていないことを示します。
状態イメージは、別の状態イメージ リストに格納され、インデックスによって識別されます。 状態イメージ リストを指定するには、 TVM_SETIMAGELIST メッセージを送信します。 1 から始まるインデックスを使用して状態イメージを識別するリスト ビュー コントロールとは異なり、ツリー ビュー コントロールの状態イメージは 0 から始まるインデックスによって識別されます。 ただし、インデックスが 0 の場合は、項目に状態イメージがないことを示します。 そのため、イメージ 0 は状態イメージとして使用できません。 項目の状態と状態イメージの詳細については、「 ツリー ビュー項目の状態の概要」を参照してください。
ドラッグ アンド ドロップ操作
ツリー ビュー コントロールは、ユーザーが項目のドラッグを開始したときに親ウィンドウに通知します。 親ウィンドウは、ユーザーがマウスの左ボタンで項目のドラッグを開始すると TVN_BEGINDRAG 通知メッセージを受け取り、ユーザーが右ボタンでドラッグを開始すると TVN_BEGINRDRAG 通知メッセージを受け取ります。 ツリー ビュー コントロールに TVS_DISABLEDRAGDROP スタイルを指定することで、ツリー ビュー コントロールがこれらの通知を送信できないようにすることができます。
TVM_CREATEDRAGIMAGE メッセージを使用して、ドラッグ操作中に表示する画像を取得します。 ツリー ビュー コントロールは、ドラッグする項目のラベルに基づいてドラッグ ビットマップを作成します。 次に、ツリー ビュー コントロールによってイメージ リストが作成され、ビットマップが追加され、イメージ リストにハンドルが返されます。
実際に項目をドラッグするコードを指定する必要があります。 これは通常、イメージ リスト関数のドラッグ機能を使用し、ドラッグ操作の開始後に親ウィンドウに送信される WM_MOUSEMOVE メッセージと WM_LBUTTONUP メッセージ (または WM_RBUTTONUP) を処理する必要があります。
ツリー ビュー コントロール内の項目をドラッグ アンド ドロップ操作のターゲットにする場合は、マウス ポインターがターゲット項目上にあるタイミングを把握する必要があります。 TVM_HITTEST メッセージを使用して確認できます。 マウス ポインターの現在の座標を含む TVHITTESTINFO 構造体のアドレスを指定します。 SendMessage 関数から制御が戻るときに、ツリー ビュー コントロールに対するマウス ポインターの位置を示すフラグが構造体に含まれます。 ポインターがツリー ビュー コントロール内の項目の上にある場合、構造体には項目へのハンドルも含まれます。
TVM_SETITEM メッセージを使用して状態をTVIS_DROPHILITED値に設定することで、項目がドラッグ アンド ドロップ操作のターゲットであることを示すことができます。 この状態にある項目は、ドラッグ アンド ドロップ ターゲットを示すために使用されるスタイルで描画されます。
Tree-View コントロールの通知メッセージ
ツリー ビュー コントロールは、次の通知メッセージを、 WM_NOTIFY メッセージの形式で親ウィンドウに送信します。
| Notification | Description |
|---|---|
| TVN_BEGINDRAG | ドラッグ アンド ドロップ操作の開始を通知します。 |
| TVN_BEGINLABELEDIT | インプレース ラベル編集の開始を通知します。 |
| TVN_BEGINRDRAG | マウスの右ボタンがドラッグ アンド ドロップ操作を開始したことを通知します。 |
| TVN_DELETEITEM | 特定の項目の削除を通知します。 |
| TVN_ENDLABELEDIT | ラベル編集の終了を通知します。 |
| TVN_GETDISPINFO | ツリー ビュー コントロールが項目を表示するために必要な情報を要求します。 |
| TVN_ITEMEXPANDED | 親アイテムの子項目の一覧が展開または折りたたまれたことを示します。 |
| TVN_ITEMEXPANDING | 親アイテムの子項目の一覧が展開または折りたたまれることを示します。 |
| TVN_KEYDOWN | キーボード イベントを通知します。 |
| TVN_SELCHANGED | 選択範囲が 1 つの項目から別の項目に変更されたことを通知します。 |
| TVN_SELCHANGING | 選択範囲が 1 つの項目から別の項目に変更されることを通知します。 |
| TVN_SETDISPINFO | 親ウィンドウに対して、アイテムに対して保持する情報を更新する必要があることを通知します。 |
既定のTree-View制御メッセージ処理
このセクションでは、ツリー ビュー コントロールによって実行されるウィンドウ メッセージ処理について説明します。 ツリー ビュー コントロールに固有のメッセージについては、このドキュメントの他のセクションで説明しているため、ここには含まれません。
| Message | 実行された処理 |
|---|---|
| WM_COMMAND | EN_UPDATEおよび編集コントロール通知メッセージEN_KILLFOCUS処理し、その他のすべての編集コントロール通知を親ウィンドウに転送します。 戻り値がありません。 |
| WM_CREATE | メモリを割り当て、内部データ構造を初期化します。 成功した場合は 0 を返し、それ以外の場合は -1 を返します。 |
| WM_DESTROY | コントロールに関連付けられているすべてのシステム リソースを解放します。 0 を返します。 |
| WM_ENABLE | コントロールを有効または無効にします。 |
| WM_ERASEBKGND | ツリー ビュー コントロールの現在の背景色を使用して、ウィンドウの背景を消去します。 TRUE を返します。 |
| WM_GETDLGCODE | DLGC_WANTARROWS値とDLGC_WANTCHARS値の組み合わせを返します。 |
| WM_GETFONT | 現在のラベル フォントへのハンドルを返します。 |
| WM_HSCROLL | ツリー ビュー コントロールをスクロールします。 スクロールが発生した場合は TRUE 、それ以外の場合は FALSE を 返します。 |
| WM_KEYDOWN | すべてのキーの親ウィンドウに TVN_KEYDOWN 通知メッセージを送信します。 ユーザーが Enter キーを押したときに 、NM_RETURN (ツリー ビュー) 通知メッセージを送信します。 ユーザーが方向キーまたは PAGE UP、PAGE DOWN、HOME、END、BACKSPACE キーを押すと、キャレットが移動します。 ユーザーが Ctrl キーをこれらのキーと組み合わせて押すと、ツリー ビュー コントロールがスクロールされます。 キーが処理されている場合は TRUE 、それ以外の場合は FALSE を 返します。 |
| WM_KILLFOCUS | フォーカスされた項目 (存在する場合) を再描画し、 NM_KILLFOCUS (ツリー ビュー) 通知メッセージを親ウィンドウに送信します。 |
| WM_LBUTTONDBLCLK | ラベルの編集をキャンセルし、項目がダブルクリックされた場合は、 NM_DBLCLK (ツリー ビュー) 通知メッセージを親ウィンドウに送信します。 親ウィンドウが 0 を返す場合、ツリー ビュー コントロールは項目の展開状態を切り替え、親ウィンドウに TVN_ITEMEXPANDING と TVN_ITEMEXPANDED 通知メッセージを送信します。 戻り値がありません。 |
| WM_LBUTTONDOWN | ユーザーが親項目に関連付けられているボタンをクリックした場合に、展開された状態を切り替えます。 ユーザーが項目ラベルをクリックした場合、ツリー ビュー コントロールによって項目にフォーカスが選択され、設定されます。 ユーザーがマウス ボタンを離す前にマウスを移動すると、ツリー ビュー コントロールによってドラッグ アンド ドロップ操作が開始されます。 戻り値がありません。 |
| WM_PAINT | ツリー ビュー コントロールの無効な領域を描画します。 0 を返します。 wParam パラメーターが NULL 以外の場合、コントロールは値がデバイス コンテキスト (HDC) へのハンドルであると見なし、そのデバイス コンテキストを使用して描画します。 |
| WM_RBUTTONDOWN | 項目がクリックされ、ドラッグ操作が開始されたかどうかを確認します。 操作が開始された場合、親ウィンドウ にTVN_BEGINRDRAG 通知メッセージが送信され、ドロップ 先が強調表示されます。 それ以外の場合は、 NM_RCLICK (ツリー ビュー) 通知メッセージが親ウィンドウに送信されます。 戻り値がありません。 |
| WM_SETFOCUS | フォーカスされた項目がある場合は再描画し、 NM_SETFOCUS 通知メッセージを親ウィンドウに送信します。 |
| WM_SETFONT | 指定したフォント ハンドルを保存し、新しいフォントを使用してツリー ビュー コントロールを再描画します。 |
| WM_SETREDRAW | 再描画フラグを設定またはクリアします。 ツリー ビュー コントロールは、再描画フラグが設定された後に再描画されます。 0 を返します。 |
| WM_SIZE | ツリー ビュー コントロールのクライアント領域のサイズに依存する内部変数を再計算します。 TRUE を返します。 |
| WM_STYLECHANGED | ラベルの編集をキャンセルし、新しいスタイルを使用してツリー ビュー コントロールを再描画します。 0 を返します。 |
| WM_SYSCOLORCHANGE | 再描画フラグが設定されている場合は、新しい色を使用してツリー ビュー コントロールを再描画します。 戻り値がありません。 |
| WM_TIMER | 項目ラベルの編集を開始します。 ユーザーがフォーカスされた項目のラベルをクリックすると、ツリー ビュー コントロールは編集モードにすぐに入るのではなく、タイマーを設定します。 タイマーを使用すると、ユーザーがラベルをダブルクリックすると、ツリー ビューが編集モードに入らないようにすることができます。 0 を返します。 |
| WM_VSCROLL | ツリー ビュー コントロールをスクロールします。 スクロールが発生した場合は TRUE 、それ以外の場合は FALSE を 返します。 |
関連トピック