2011-01-05 16 views
0

私はWindowsのリストビューコントロールを使用していますが、LVCOLUMNとHDITEMでは少し混乱しています。前者の構造は列プロパティを定義するために使用され、後者は列のacturalヘッダーオブジェクトを定義するために使用されます。Windows GUIコントロール:LVCOLUMNとHDITEMの違いは?

もしそうなら、両方を作成/定義する必要がありますか?

答えて

1

通常、LVCOLUMNを処理して、リストビュー自体がヘッダーコントロールを更新できるようにします。

ヘッダーに直接アクセスするときは、一般的にHDITEMを使用する(またはヘッダーコントロールに話す)必要があります。これはまれですが、場合によっては起こります。

+0

リストモードのフィルタリング機能をレポートモードで使用しようとすると、この問題が発生します。 LVCOLUMNとHDITEMには、テキスト、幅、順序などのいくつかの同一のプロパティがあります。 InsertColumn()を既に使用している場合は、InsertItemをヘッダーに追加する必要がありますか、ヘッダーのSetItemを変更するだけですか? – Sheen

+0

@Sheen、listviewのInsertItemは自動的にヘッダーを更新するはずです。ヘッダーは、リストビューの内部の子/コンポーネントと考えることができます。一般的に、ヘッダーに直接アクセスする必要があるのは、リストビュー自体がメソッドを提供しないものを実行したい場合です。リストビューにメソッドがある場合は、一般的にヘッダ自体を更新します。あなたは通常、2つのことを自分で同期させる必要はありません。 –

+0

ありがとうございます。 InsertColumn()を呼び出すと、ヘッダ項目が自動的に作成されます。フィルタとLPARAMの機能を有効にしたい場合は、GetHeaderCtrl()を呼び出す必要があります。SetItem()でHDI_FILTERとHDI_LPARAMを指定します。 – Sheen

関連する問題