タブコントロールの使用方法

[戻る]
tabs 2007/01/26(金) 11:50:01
環境はVC++6.0 でMFCに作成しております。

[問題としまして]
ダイアログベース上にタブコントローラを配置し、そこにダイアログを乗せて表示
しようとしてます。表示させるダイアログは下記のように設定しております。
<スタイル>チャイルド
その他の設定なし。

[記述プログラム]
ヘッダにて
    typedef struct{
        CDialog*    dlg;
    }S_DIALOG;
         S_DIALOG    m_dlg[7];


メインとなるダイアログのOnInitDialog内で
    RECT Rect1; 
    RECT Rect2; 

    m_Tab1.GetClientRect(&Rect1);
    m_Tab1.GetWindowRect(&Rect1);
    m_Tab1.InsertItem(0,"全般");
    m_Tab1.InsertItem(1,"セキュリティ");
    m_Tab1.InsertItem(2,"プライバシー");
    m_Tab1.InsertItem(3,"コンテンツ");
    m_Tab1.InsertItem(4,"接続");
    m_Tab1.InsertItem(5,"プログラム");
    m_Tab1.InsertItem(6,"詳細設定");

    m_dlg[0].dlg = new CDialog;
    m_dlg[0].dlg->Create(IDD_DIALOG1, this);
    m_dlg[0].dlg->ShowWindow(SW_SHOW);
    m_dlg[0].dlg->GetClientRect(&Rect2);
    m_dlg[0].dlg->SetWindowPos(&m_Tab1,Rect1.left,
                                    Rect1.top,
                                   (Rect2.right - Rect2.left),
                                   (Rect2.bottom - Rect2.top),0);

と記述しております。
ダイアログ上のタブ自体には、表示したいダイアログの情報は表示されるのですが、
Tab上に表示させているダイアログ上でのイベントの拾い方がわかりません。
表示させたいダイアログ自体には、クラスを作成しているのですが、そこのクラスでは
イベントを拾うことができません。どのような処理が必要なのでしょうか?
申し訳ありませんが、ご教授ください。

PATIO 2007/01/26(金) 11:57:15
Tabの各ページに相当するダイアログに対応するインスタンス生成に
CDialogクラスを使っているからだと思います。
これだといくらリソースに目的のダイアログのものを指定しても
そのイベントを拾う為のコードが実装されていないクラスで
インスタンスを作成していますからイベントは受けられません。

ですから、
m_dlg[0].dlg = new CXXXXXX;

のXXXXXXの部分に実際に作ったダイアログのクラス名を入れて見てください。
それで大丈夫だと思います。

tabs 2007/01/26(金) 11:59:27
[[解決]]
なるほど、初歩的なことで申し訳ありません。
すぐに解決できました。ありがとうございます。

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