タブコントロールの使用方法 – プログラミング – Home

タブコントロールの使用方法
 
通知
すべてクリア

[解決済] タブコントロールの使用方法


tabs
 tabs
(@tabs)
ゲスト
結合: 18年前
投稿: 2
Topic starter  

環境は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
(@patio)
Famed Member
結合: 3年前
投稿: 2660
 

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

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

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


返信引用
tabs
 tabs
(@tabs)
ゲスト
結合: 18年前
投稿: 2
Topic starter  

なるほど、初歩的なことで申し訳ありません。
すぐに解決できました。ありがとうございます。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました