通知
すべてクリア
Topic starter
2003年7月27日 7:00 PM
はじめまして、VC初心者です。
いつも、このサイト参考にしているものです。
そこでどなたか教えていただきたいのですが、今、環境 Win2000 VC++6.0のMFCでプログラム
を作っているのですが、ダイアログベースで例えば、3つのダイアログA、B、Cを使用すると
してAが親ダイアログでBが子、Cが孫ですよね。それで孫ウィンドウを表示させたときに子の
ダイアログのポインタが取得したいのですが、どうすればいいのか分からなくって困っていま
す。誰か助けてください。お願い!!
よろしくお願いします。
2003年7月27日 11:10 PM
たとえば:
class C : public CDialog {
B* 子;
public:
void set子(B* b) { 子 = b; }
...
};
void B::なにか() {
C c;
c.set子(this);
c.DoModal();
}
2003年7月28日 11:35 AM
単に自分の親のポインタがほしいだけならCWndにGetParentで取得できます。
取得した後、親ダイアログのクラスにキャストすれば親ダイアログ独自のメンバー関数も
呼び出せます。
但し、ダイアログのインスタンス生成時に親を指定しておくことが必要です。
あと、親子関係を書いていますが、表示上の画面の出る順番とクラス上の親子関係は
必ずしも一致しないので書き込むときはその辺をちゃんと書きましょう。
ダイアログの生成時に以下のようにすれば、ウインドウ間の親子関係は指定できます。
CXXXDialog dlg(this);
CXXXDialogの中でGetParentすれば、dlgを宣言したクラスのポインタが取れるはずです。
Topic starter
2003年7月30日 4:01 PM
ありがとうございました。