1

リストビューでカスタム (サブ) アイテム描画を実装する通常の方法は、親クラスで NM_CUSTOMDRAW 通知を処理し、そこで描画を行うことです。

ただし、私は再利用可能なリストビュー派生ウィンドウ クラスを作成しており、インスタンス化されたウィンドウが使用されているすべての場所でユーザーに通知を強制的に反映させる必要がないようにしたいと考えています。

これを行う2つの代替方法を知っていますが、どちらにも欠点があります

1: 2 つのカスタム ウィンドウ クラスを登録します。1 つはリストビューから派生し、もう 1 つはクラスをインスタンス化するものによって使用されます。2 番目のクラスは、カスタム リストビューを子ウィンドウとして作成し、すべての通知をインターセプトしてから、これらを反映するか、親に転送します。欠点は次のとおりです。外側のコントロールに送信されたすべての外部メッセージを内側のコントロールに転送するか、カスタム ウィンドウ メッセージを介して内側のコントロールを公開する必要があります (リストビューのヘッダー コントロールにアクセスする方法と同様です)。すべての通知もその親に転送する必要があります。

2: コントロールは親ウィンドウをサブクラス化し、その段階で WM_NOTIFY メッセージをインターセプトできます。欠点: これは悪い考えであり、非常に脆弱な方法でもあります。

別の方法: 3. 引き続き通知の反映を要求します。

完全なカスタム描画を実行する以外に、カスタム描画について通知を受けるより良い方法はありますか、または完全なカスタム描画を実行してデフォルトの描画を最初にトリガーし、その後カスタム データを表示する列の内容をペイントする方法はありますか?

4

0 に答える 0