MDI子ウィンドウのサイズの固定 – プログラミング – Home

MDI子ウィンドウのサイズの固定
 
通知
すべてクリア

[解決済] MDI子ウィンドウのサイズの固定


モーモー
 モーモー
(@モーモー)
ゲスト
結合: 22年前
投稿: 49
Topic starter  

いつもお世話になってます。

今、vc++ver6.0、MFCで、MDIを作成しています。
起動時に、3つの子ウィンドウを表示させるところまではできたのですが、
それから、子ウィンドウの表示位置とサイズを固定させたく手を加えているところなのですが
うまくいきません。

いろいろ参考にしているのですが、1つの子ウィンドウはサイズ変更できているのに対し、
2つ目・3つ目の子ウィンドウともに、初期状態のままです。

以下にソースを添付しました。どこがいけないのかわからないので、ご指摘ください。

**************
CXXXXXXView1::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
------------略
CWnd::MoveWindow(0,0,200,200);
return 0;
}

CXXXXXXView2::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
------------略
CWnd::MoveWindow(200,0,200,400);
return 0;
}

CXXXXXXView3::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
------------略
CWnd::MoveWindow(0,200,200,200);
return 0;
}


引用未解決
トピックタグ
dairygoods
 dairygoods
(@dairygoods)
ゲスト
結合: 23年前
投稿: 1421
 

Viewは、MDI子フレームの内側に張り付いているウィンドウですので、
Viewのサイズを変えてもフレームのサイズは変わりません。

Viewの親がCChildFrameというMDIフレームクラスになっています。


返信引用
モーモー
 モーモー
(@モーモー)
ゲスト
結合: 22年前
投稿: 49
Topic starter  

CChildFrameで、個々のウィンドウのサイズや位置の指定はできるのでしょうか?

いろいろ参考に、
BOOL CChildFrame::PreCreateWindow(CREATESTRUCT& cs)
{
if( !CFrameWnd::PreCreateWindow(cs) )
return FALSE;
// TODO: この位置で CREATESTRUCT cs を修正して、Window クラスやスタイルを
// 修正してください。

// ウィンドウの左上が X軸200,Y軸100の場所に指定
cs.x = 200;
cs.y = 100;
// ウィンドウのサイズを、幅500,高さ300に指定
cs.cx = 500;
cs.cy = 300;

return TRUE;
}

と、記述してみたのですが、3つの子ウィンドウすべてが操作されてしまい、
うまくできませんでした。

すみませんが、もう少し書き方的なことを教えてください。
よろしくお願いします。


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

> CXXXXXXView1::OnCreate(LPCREATESTRUCT lpCreateStruct)
> {
> ------------略
> CWnd::MoveWindow(0,0,200,200);
これを、
GetParent()->MoveWindow(...);

ここで駄目ならOnInitialUpdate()で。

あるいは、3つの異なるMDIフレームを作って、
PreCreateWindow()だけをオーバーライドする方法も考えられます。

public CView1ChildFrame : public CChildFrame {
PreCreateWindow();
};
public CView2ChildFrame : public CChildFrame {
PreCreateWindow();
};
public CView3ChildFrame : public CChildFrame {
PreCreateWindow();
};


返信引用
モーモー
 モーモー
(@モーモー)
ゲスト
結合: 22年前
投稿: 49
Topic starter  

上の方のやり方でサイズと位置の変更ができました!!!!
今回の質問に対しては解決です。
本当にありがとうございました。

ずうずうしい話ですが、
ちなみに、ウインドウの移動を禁止する(?)方法【場所固定する方法】を
知っていたら教えてください。


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

WM_NCHITTESTでクライアント領域のふりをすればOK、多分。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

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