TabCtrlにダイアログを貼り付ける

[戻る]
匿名san 2005/07/21(木) 18:27:30
連投で申し訳ありません。タイトルの通りなのですが、

現在、ダイアログA(「親」って言い方でいいのかな?)に
Tabコントロールを貼り付けてます。
AのOnInitDialog()にて、Tabコントロールのタイトル設定を行い
最初のタブの表示をさせようとしてます。(タイトル設定はOK。)

表示させる内容として、ダイアログB(スタイル:チャイルド/境界線:なし
タイトルバー:なし)を作りました。
Tabコントロール上にBの表示方法を探したのですが、APIでのやり方
しか見つからずMFCの方法が探せなかったので、試行錯誤でソース書いて
みました。上記のタイトル設定後です。

CDialogA Dialog; // インスタンス生成
Dialog.Create(DIALOG_A, NULL); // ダイアログ生成(?)←理由がイマイチです。
Dialog.MoveWindow(**, **, **, **); // 表示位置決め。数値は適当です。
Dialog.ShowWindow(SW_SHOW); // で表示。

エラーは無く実行は出来るのですが、表示できません。
MoveWindowの位置が悪いのかな?とも思い、値を変えて
やってみたのですがやはり表示できません。
(Tabコントロールの内部の座標の取得方法も?ですが、
これは表示が出来てから探そうかと・・・。)

自分の力及ばず、申し訳ありませんがご教授下さい。
また参考になるサイト等あれば合わせて教えてください。
宜しくお願い致します。

匿名san 2005/07/21(木) 18:58:32
>Dialog.MoveWindow(**, **, **, **); // 表示位置決め。数値は適当です。

やはり、ここの数値が問題だったようです。
あくまでも適当にやっていた為、変な所で
「物凄く小さく」表示されてたみたいです。

実際、TABコントロールの中身の最大座標って
どのように取得すればいいんでしょうか?
GetItemRect()を見ると「タブに外接する四角形」となるので、
貼り付け座標を考える場合はあまり意味を持たないと思います。

もしかして、これで得たrectから、試行錯誤で内部を合わせるとか
しないとダメなんでしょうか?半分自己解決しましたが、
新たに質問させてください。宜しくお願いします。

dairygoods 2005/07/21(木) 19:26:08
CTabCtrl::AdjustRect で。

匿名san 2005/07/21(木) 20:02:27
[[解決]]
ありがとうございます。
MSDNを読みました。うまく行きそうです。
ありがとうございました。解決とします。

ちなみに今回みたいに「やりたい事が出来る関数」が
わからない場合って、皆さんどうやって探してるんで
しょうか?取得とか設定ならGetとかSetとかをキーに
なんとか探せますが、流石にAdjustまでは考え付きませんでした。
一度使ってしまえば覚えられますけど・・・。
やっぱ難しいですね。

前出の質問も合わせてありがとうございました。m(__)m

dairygoods 2005/07/21(木) 22:11:41
MSDN で CTabCtrl のメンバ関数一覧を見ます。
http://www.microsoft.com/japan/msdn/library/ja/vclib/html/_mfc_ctabctrl_class_members.asp

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