私の説明は私が発見した事実に基づいていますが、これは私にとって学習経験でした。少し混乱してしまった場合は申し訳ありませんが、まだ頭の中で落ち着かせています.
この問題に加えて、関連性があることが判明した別の問題を見つけました。私が書いているプログラムの性質上、CListCtrls には固定幅のヘッダーが必要でした。それは、私がセットアップできなかった別のものであることが判明しました! ユーザーがヘッダーの仕切りをつかんでサイズ変更したり、ダブルクリックして自動サイズ変更したりできないようにする必要がありました。もちろん、子 CHeaderCtrl に基づいて CListCtrl に機能があり、これを設定できますか? どうやらそうではありません。たとえば、LVS_EX_HEADERDRAGDROP は方法ではありません。
それで、私は自分自身を可能にするメッセージをキャプチャしようと試みましたが、何を知っていますか、できませんでした! いくつかはトラップできましたが、必要なものはトラップできませんでした。HDN_BEGINTRACK と HDN_DIVIDERDBLLICK を探していました。(これらのバージョンの A と W の両方を別々に扱わなければならないという事実には触れません!) CHeaderCtrl は CListCtrl の子ですが、そのメッセージを CListCtrl の親として CDialog に送り返します。リストと 0 の両方をヘッダーが明らかに使用する ID として使用してみました。それらの多くは、まったくそこに表示されませんでした。
そこで、CListCtrl から継承する独自の CListCtrl クラスを作成し、OnNotify をオーバーライドすると、そこに現れました。これらのメッセージに対して CListCtrl::On Notify が呼び出されないようにしただけで、機能し、サイズ変更機能はまったくありませんでした。
また、関連する可能性のあるZオーダーも試しました。前に説明しませんでしたが、このリストと別のリストは 2 つのタブにあり、互いにぴったり重なっています。タブを選択すると、各リストが順番に非表示および表示されます。もう一方のリストは、OnInitDialog のデフォルト表示を起動時に表示するように変更しても、表示に問題はありませんでした。
それは問題のあるものの下にありました。そのため、設定した OnInitDialog で Z オーダーを変更しても、何もしませんでした。そして、その2番目のリストでそれをこすることも、私が望んでいたようにデフォルトでサイズ変更できず、理由を見つけることができませんでした. それらのプロパティはまったく同じようにリストされており、コードのどこにも異なる側面が手動で設定されていませんでした。理論的には事実上同一でしたが、実際にはそうではありませんでした。とてもイライラします!!!
その結果、ヘッダーのサイズ変更の問題が解決されたので、表示の問題も解消されました。私と同様の症状を報告している他の数人にも、CListCtrl は少し不安定なものの 1 つであり、それを最大限に活用するには少しマッサージする必要があるように見えます。
このコントロールをよく知っている人にとって、それが理にかなっていることを願っています. 解決策が簡単だったことに驚きましたが、診断プロセスが非常に難しいことにも驚きました。もちろん、それは私が働いている老化システムに帰着するかもしれません. 現在、私はこれを楽しみのためだけに行っており、2005 年から時折使用するために VS を更新する費用は優先度が高くありません。一部の症状は他のビルドおよび実行環境では表示されないと確信していますが、Google が他の人のために見つけられるように、問題と私の解決策をどこかに記録しておく価値があるかもしれません。