MFCのSDIで開発しています。
class CView1 : public CView //App Wizardが作ったView
class CView2 : public CView //自作したView
となっているとき、プログラムの実行時にCView2を作成し、
CView1の上に貼り付けたいのです。
どのようなコーディングをすればよいでしょうか?
少し違うかもしれませんが、VCのサンプルにcollectってものがあります
これでVIEWの切替を行っています
これを参考にできないでしょうか?
ここでも結構紹介してますけど
VSWAP32なんかどうでしょう
VSWAP32とは何でしょうか?
サンプルソースはどこにありますか?
----------- サンプル 取得場所 -----------------
サンプル日本語ドキュメントはここ↓
> http://support.microsoft.com/default.aspx?scid=kb;ja;JP141334
サンプルダウンロードは(Visual C++ 6.0版)
> http://support.microsoft.com/default.aspx?scid=kb;en-us;Q141334
ちょっと違うんです。
動的に作成したビュー(CView2)をウインドウいっぱいに貼り付けるんじゃなくて、
CView1の上にCView1より小さくして貼り付けたいんです。
ですので外観はCView1とCView2が見えてることになります。
CView1 の OnCreate で、CView2 を動的に作成します。
CView2* pView2 = (CView2*)RUNTIME_CLASS(CView2)->CreateObject();
if (!pView2->Create(NULL, NULL, WS_CHILD | WS_VISIBLE | WS_DLGFRAME,
CRect(100, 100, 200, 200), this, 0, (CCreateContext*)lpCreateStruct-
>lpCreateParams))
return -1;
貼り付けたビューが分かるように、WS_DLGFRAME を追加しています。
ID は 0 にしていますが、自由に変更できます。
CView2 を CView1 と同じドキュメントに関連付けるため、
lpCreateStruct->lpCreateParams を CCreateContext* にキャストして渡しています。
終了処理は特に必要ありません。ウィンドウ破棄と同時に、CView2 は自動的に開放されます。
TADさん、ありがとうございました。
期待通りの動作をしました。