MDIでのダイアログ生成
VC++2005でMDIアプリケーションを作成しています。
ダイアログベースでは、DoModal()にてダイアログを生成していましたが、
MDIでのダイアログ生成の方法が分かりません。。
調べた結果、
(1)CreateWindow()にてクライアントウィンドウを作成
(2)CreateMDIWindow()にて子ウィンドウを作成
の順序で処理を行うことは分かりましたが、
関数の一部の引数に何を設定してやれば良いのかが不明です。。
※下記はネット上にあったサンプルソースです。
「???」の箇所が不明な引数です。
(1)
CreateWindow(
TEXT("MDICLIENT"), //MDICLIENT は固定です
NULL,
WS_CHILD | WS_VISIBLE | WS_CLIPCHILDREN,
0, 0, 0, 0,
hWnd, //メインウィンドウのハンドル←???
(HMENU)1, //←???
hInst, //インスタンスハンドル←???
(LPSTR)&ccs //CLIENTCREATESTRUCT構造体のポインタ←???
);
(2)
HWND CreateMDIWindow(
MDI_CHILD , //ウィンドウクラス名
TITLE , //ウィンドウのタイトルバーテキスト
0 , //ウィンドウスタイル。WS_MAXIMIZE(最大化表示)など
CW_USEDEFAULT , //X座標
CW_USEDEFAULT , //Y座標
CW_USEDEFAULT , //幅
CW_USEDEFAULT , //高さ
hClientWindow , //クライアントウィンドウのハンドル ←???
hIns , //インスタンスハンドル ←???
0 //アプリケーション定義の値
);
なお、行いたい処理の流れとしては、
CTestDialogクラスより、CTest2Dialogクラスのダイアログを、
呼び出したいのです。
うまく説明できず申し訳ありませんが、
お詳しい方おられましたら、具体例など交えてご説明頂けると幸いです。
お手数ですが、どうか宜しくお願い致します。
お礼
すみませんが他のサイトで解決しました。 原因は初歩以下のアホミスでした。 ただ単純にWM_SIZEが来たときにクライアントウィンドウの位置をツールバーの下にずらしたその後に returnではなくbreak;をしていたのでdefaultの処理までしていたことが原因でした。 少しとはいえ付き合ってくれてありがとうございました。
補足
すみませんでした。環境書いて無かったです。 環境はBorlandC++です。 >SDIでツールバーを作成することはできますか。 普通にウィンドウの上に表示されるものは出来ている。 >・・・どういう状態をさすのかわからないです。 ただこれは私がMDIでの作成方法を知らないからだと思います。 現状の文章↓ フレームウィンドウに、ツールバーを作る。 しかし、クライアントウィンドウがかぶさり押せない状況。 それなので、クライアントウィンドウの位置をツールバーの下になるようにWM_SIZEにMoveWindowを作成。 それでもボタンが押せない(つまりウィンドウが移動してない?というか間違えた?) ですのでクライアントウィンドウにツールバーを作る。 プロシージャがないので処理が出来ない。 それなのでツールバーをサブクラス化。 処理が出来るようになったけどそれでいいのかと思っている。。。 わかりにくかったらすいません。 ですけど、解決案を教えてください。 他のサイトで聞いたところMFCやWTLを使えばいいと書いていましたが使い方がわかりません。