ダイアログのアドレス取得

[戻る]
YAMA 2006/03/14(火) 00:24:40
はじめましてYAMAと申します。
VC++2005のMFCによるSDIのフォームビューベースの環境で、
フォームビューより、モーダルダイアログを表示した時の、
ダイアログのアドレスの取得方法を教えて下さい。、
やりたい事は、そのダイアログの中でリストビューのヘッダーによるソートを実現した
いのです。
ダイアログベースや、フォームビュー上での取得方法等はわかったのですが、
上記の場合での、比較関数(CALLBACK)内からの取得方法がわかりません。
比較関数以外からは、GetParentOwner()で取得できそうなのですが・・・・
どなたかご教授、願えませんでしょうか??
尚、ダイアログ、フォームビューのプロパティ項目に設定しなければいけない項目等も
あればお願いします。

Blue 2006/03/14(火) 01:04:59
リストビューのあるのがダイアログであるならば、親であるウィンドウでやらずに
ダイアログクラスでやるべき作業ではないでしょうか?
# ダイアログクラスから見れば、自分だけで済むことで親がなんだろうと関係ない。

PATIO 2006/03/14(火) 16:22:09
もしかして、CListCtrlのポインタがあれば事足りるなんて事はないですか?
Web上を見ていたらItemDataにデータのインデックスを入れといて
リストコントロールからインデックスでデータを取り込んでソートしている
例があったみたいですけれど。
方法論的になりますけれど、予めデータが自分の思い通りに並ぶような数値を
データから計算して出しておいて書くアイテムのItemDataに設定しておき、
比較関数は単純にもらった数値の大小比較をするというのも手でしょうし、
ItemDataにそのアイテムの比較に必要な情報を保持しているクラスのポインタを
入れておいて比較関数側でそのクラスの中身を見るなり、そのクラスに用意した
比較用の関数を呼ぶなりして大小比較して結果を返すとかした方が良い様な気もします。
いずれにせよ、ダイアログのアドレスがなくても処理が出来るように考えた方が
よいのではないでしょうか?

PATIO 2006/03/14(火) 16:23:15
誤字。(^^;

誤)
データから計算して出しておいて書くアイテムのItemDataに設定しておき、

正)
データから計算して出しておいて各アイテムのItemDataに設定しておき、

YAMA 2006/03/14(火) 20:57:59
[[解決]]
YAMAです。
PATIOさんの言うとおり、無理にダイアログのアドレスを
取得しないで実装する方法がありそうですね、そちらの方向で
検討してみます。アドバイスありがとうございました。

古いスレッドには追加発言できません。