動的にViewを作成し既存のViewの上に貼り付けるには – プログラミング – Home

動的にViewを作成し既存のViewの...
 
通知
すべてクリア

[解決済] 動的にViewを作成し既存のViewの上に貼り付けるには


カミーユ
 カミーユ
(@カミーユ)
ゲスト
結合: 22年前
投稿: 16
Topic starter  

MFCのSDIで開発しています。
class CView1 : public CView //App Wizardが作ったView
class CView2 : public CView //自作したView

となっているとき、プログラムの実行時にCView2を作成し、
CView1の上に貼り付けたいのです。

どのようなコーディングをすればよいでしょうか?


引用未解決
トピックタグ
ナオーバ
 ナオーバ
(@ナオーバ)
ゲスト
結合: 23年前
投稿: 187
 

少し違うかもしれませんが、VCのサンプルにcollectってものがあります
これでVIEWの切替を行っています

これを参考にできないでしょうか?


返信引用
wood
 wood
(@wood)
ゲスト
結合: 23年前
投稿: 895
 

ここでも結構紹介してますけど
VSWAP32なんかどうでしょう


返信引用
カミーユ
 カミーユ
(@カミーユ)
ゲスト
結合: 22年前
投稿: 16
Topic starter  

VSWAP32とは何でしょうか?
サンプルソースはどこにありますか?


返信引用
wood
 wood
(@wood)
ゲスト
結合: 23年前
投稿: 895
 

----------- サンプル 取得場所 -----------------
サンプル日本語ドキュメントはここ↓
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


返信引用
カミーユ
 カミーユ
(@カミーユ)
ゲスト
結合: 22年前
投稿: 16
Topic starter  

ちょっと違うんです。
動的に作成したビュー(CView2)をウインドウいっぱいに貼り付けるんじゃなくて、
CView1の上にCView1より小さくして貼り付けたいんです。
ですので外観はCView1とCView2が見えてることになります。


返信引用
TAD
 TAD
(@TAD)
ゲスト
結合: 23年前
投稿: 54
 

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 は自動的に開放されます。


返信引用
カミーユ
 カミーユ
(@カミーユ)
ゲスト
結合: 22年前
投稿: 16
Topic starter  

TADさん、ありがとうございました。
期待通りの動作をしました。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

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