ツリー コントロールのラベルの編集

更新 : 2007 年 11 月

ユーザーは、TVS_EDITLABELS スタイルが設定されているツリー コントロール (CTreeCtrl) 内の項目のラベルを直接編集できます。ユーザーは、フォーカスがある項目のラベルをクリックして編集を開始します。アプリケーションでは、EditLabel メンバ関数を使用して編集を開始します。ツリー コントロールは、編集の開始時と編集のキャンセル時または完了時に通知を送ります。編集が完了したら、項目ラベルを更新する必要があります。

ラベル編集が開始されると、ツリー コントロールは TVN_BEGINLABELEDIT 通知メッセージを送ります。この通知によって、ラベルに応じて編集を許可したり、禁止したりできます。0 を返すと編集は許可され、0 以外を返すと編集は禁止されます。

ラベル編集がキャンセルされる、またはラベル編集が完了すると、ツリー コントロールは TVN_ENDLABELEDIT 通知メッセージを送ります。パラメータ lParam は、NMTVDISPINFO 構造体のアドレスです。item メンバは TVITEM 構造体を示します。この構造体は、項目を指定し、編集済みのテキストを格納しています。ラベルの更新は、編集済みの文字列の正当性をチェックした後で行います。編集がキャンセルされる場合は、TV_ITEMpszText メンバは 0 になります。

ラベルの編集中は、通常、TVN_BEGINLABELEDIT 通知メッセージに応答します。このとき GetEditControl メンバ関数を使用して、ラベル編集に使われるエディット コントロールへのポインタを取得できます。エディット コントロールの SetLimitText メンバ関数を呼び出してユーザーが入力できるテキストの量を制限できます。また、エディット コントロールをサブクラス化して、無効な文字を受け取って破棄することもできます。ただし、エディット コントロールが表示されるのは TVN_BEGINLABELEDIT が送られた後だけです。

参照

概念

コントロール (MFC)

参照

CTreeCtrl の使い方