トップ回答者
CListCtrlにてソート終了を知る方法

質問
-
こんにちわ。
CListCtrlを用いてカラムクリックイベントでソートを実現しています。ソートは出来ているのですが、ソートされた結果に基づいて有るカラムの内容を変更したいので、ソートが終了しリスト表示が更新されたことを知りたいのですが、その方法が分からず困っています。
SortItemにて呼ばれるCompareFuncが全て呼び出され、リストの更新が終了したことを知る方法は無いでしょうか?
- 編集済み EmoraEmora 2011年1月24日 10:25 Typo
回答
-
SortItems の処理が終わっていれば、画面の更新は考慮しなくてもよいのなら、
CListCtrl の派生クラスを作成し、そこで、LVM_SORTITEMS メッセージをトラップすれば、SortItems の呼び出しをトラップできます。
中身を
{ Default(); // ソート終了後にやりたいこと }
としてやれば、CListCtrl のソート処理が終わった後に、やりたいことができます。ただし、この時点ではまだ画面は再描画されていません。
どうしても、ソート後の再描画の後に...という場合は、フラグを立てておいて、WM_PAINT を受け取るようにすれば対処できます。
わんくま同盟,Microsoft MVP for Visual C++(Oct 2005-) http://blogs.wankuma.com/tocchann/- 回答としてマーク EmoraEmora 2011年1月25日 6:31
すべての返信
-
SortItems の処理が終わっていれば、画面の更新は考慮しなくてもよいのなら、
CListCtrl の派生クラスを作成し、そこで、LVM_SORTITEMS メッセージをトラップすれば、SortItems の呼び出しをトラップできます。
中身を
{ Default(); // ソート終了後にやりたいこと }
としてやれば、CListCtrl のソート処理が終わった後に、やりたいことができます。ただし、この時点ではまだ画面は再描画されていません。
どうしても、ソート後の再描画の後に...という場合は、フラグを立てておいて、WM_PAINT を受け取るようにすれば対処できます。
わんくま同盟,Microsoft MVP for Visual C++(Oct 2005-) http://blogs.wankuma.com/tocchann/- 回答としてマーク EmoraEmora 2011年1月25日 6:31