本ページは公開が終了した情報の複製であり、掲載時点での情報です。本ページに記載されている内容について各所に問い合わせることはご遠慮下さい。
サポート技術情報

[MSVC] MFCでプログラムの起動時の Window サイズを指定するには

文書番号: 403829

最終更新日: 1999/03/19


この資料は以下の製品について記述したものです。


この記事は、以前は次の ID で公開されていました: JP403829


概要

この資料は、MFC のアプリケーションのプログラムの起動時の Window サイズを指定 する一つの方法を紹介したものです。

詳細

<QUESTION>

AppWizard でプログラムのスケルトンを作成したのですが、そのプログラムの起動
時の Window サイズを固定にしたいのですが、どのようにすれば良いのでしょうか。

<ANSWER>

  • メインウィンドウ CMainFrame のサイズ変更指定 1。 ShowWindow を呼ぶ前に CWnd のメンバ関数 SetWindowPlacement() 関数でサイズを 指定するのが一番簡単な方法です。
  • メインウィンドウ CMainFrame のサイズ変更指定 2。
    1. CWnd::PreCreateWindow(CREATESTRUCT& cs) を CMainFrame にインプリメン トします。
    2. インプリメントした PreCreateWindow 関数内で以下の処理を行います。
             ** SDI の場合
               BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
               {
                 if (!CFrameWnd::PreCreateWindow(cs))
                     return FALSE;
                   cs.x = 100;        // x 座標 表示位置
                   cs.y = 100;        // y 座標 表示位置
                   cs.cx = 500;       // 幅
                   cs.cy = 1000;      // 高さ
                   return TRUE;
               }
             ** MDI の場合
               BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
               {
                 if (!CMDIFrameWnd::PreCreateWindow(cs))
                     return FALSE;
                   cs.x = 100;        // x 座標 表示位置
                   cs.y = 100;        // y 座標 表示位置
                   cs.cx = 500;       // 幅
                   cs.cy = 1000;      // 高さ
                   return TRUE;
               }
      
  • メインウィンドウ CMainFrame のサイズ変更指定。 * MDI の場合 2。 CWinApp の派生クラスの InitInstance 関数内で呼び出している LoadFrame 関数を Create 関数に置き換えることで Window サイズを指定出来ます。
         [変更前] '->' の行を変更します
             // メイン MDI フレーム ウィンドウを作成します。
             CMainFrame* pMainFrame = new CMainFrame;
         ->  if (!pMainFrame->LoadFrame(IDR_MAINFRAME))
                 return FALSE;
             pMainFrame->ShowWindow(m_nCmdShow);
             pMainFrame->UpdateWindow();
             m_pMainWnd = pMainFrame;
             // 新規 (空の) ドキュメントを作成します。
         [変更後] '->' の行が追加変更されています
             // メイン MDI フレーム ウィンドウを作成します。
             CMainFrame* pMainFrame = new CMainFrame;
         ->  CString WindowName;
         ->  WindowName.LoadString (IDR_MAINFRAME);
         ->  RECT rect = { 10, 10, 500, 400};
         ->  if (!pMainFrame->Create(NULL,  WindowName, WS_OVERLAPPEDWINDOW |
         ->      FWS_ADDTOTITLE,rect, NULL, MAKEINTRESOURCE (IDR_MAINFRAME) ) )
                 return FALSE;
             pMainFrame->ShowWindow(m_nCmdShow);
             pMainFrame->UpdateWindow();
             m_pMainWnd = pMainFrame;
             // 新規 (空の) ドキュメントを作成します。
    
  • MDI の子ウィンドウの場合 。 MDI のアプリケーション スケルトンに以下の修正を加えれば 子ウィンドウ 作成時の Window サイズを指定できます。 (C????View の '????' はプロジェクト名によって変わります)
    1. ClassWizard で WM_CREATE のハンドラ C????View::OnCreate 関数を追加する。 1. 「ブラウズ (B) 」メニューの「 ClassWizard(W)...」コマンドで ClassWizard を起動
           2. [クラス名 (N)] コンボ ボックスから "C????View" を選ぶ。
           3. [オブジェクト ID (O)] リストから "C????View" を選ぶ。
           4. [メッセージ (M)] リストの "WM_CREATE" をダブルクリックするか
      
      "WM_CREATE" を選んだあと [関数の追加 (A)] ボタンを押す。 5. [メンバ関数] リストの "OnCreate ON_WM_CREATE" をダブルクリックするか "OnCreate .... " を選び [コードの編集 (E)] ボタンを押す。 2. C????View::OnCreate 関数で 親ウィンドウに対して MoveWindow 関数で Window サイズを指定する 1.e. で ClassWizard が生成した関数に Window サイズを指定する処理 (CWnd::MoveWindow 関数) を追加して完成。
             -> /////////////////////////////////////////////////////////////////////
             -> // C????View クラスのメッセージ ハンドラ
             ->
             -> int C???View::OnCreate(LPCREATESTRUCT lpCreateStruct)
             -> {
             ->    if (CView::OnCreate(lpCreateStruct) == -1)
             ->        return -1;
             ->
             ->    // TODO: この位置に特殊な生成用のコードを追加してください。
             **    GetParent()->MoveWindow (10,10, 200, 200);
             ->    return 0;
             -> }
            '->' の行は ClassWizard が生成したコード
            '**' の行を追加する
      
CWnd::MoveWindow() 関数の引数については、オンラインヘルプ を参照して下さい。

詳細

  • Visual C++ は、米国 Microsoft Corporation の商標です。

Keywords: KBHOWTO VC10 VC15 VC20 KB403829
Technology: kbAudDeveloper kbvc150 kbVC32bitSearch kbVCsearch

inserted by FC2 system