「MFCコントロール - 分割ウインドウ」の版間の差分

📢 Webサイト閉鎖と移転のお知らせ
このWebサイトは2026年9月に閉鎖いたします。
新しい記事は移転先で追加しております。(旧サイトでは記事を追加しておりません)

108行目: 108行目:
  [クラスの種類(T)]   MFCクラスを選択<br>
  [クラスの種類(T)]   MFCクラスを選択<br>
  [クラス名(N)]     CPaneBViewとCPaneCView<br>
  [クラス名(N)]     CPaneBViewとCPaneCView<br>
  [基本クラス(B)]    CFormViewクラス(CViewの派生クラスならどれでもよい)<br>
  [基本クラス(B)]    CViewの派生クラス(ここではCFormViewクラスを使用する)<br>
<br>
<br>
次に、CMainFrm.hファイルに下記のソースコードを追加する。<br>
次に、CMainFrm.hファイルに下記のソースコードを追加する。<br>
114行目: 114行目:
  CMainFrm.h
  CMainFrm.h
   
   
  class CMainFrame : public CFrameWnd
  class CMainFrame : public CFrameWndEx
  {
  {
     // ...
     // ...
     public:
     public:
       CSplitterWnd  m_SplitMain;  // メインフレームを左右分割する為に使用する分割ウインドウ(メインスプリッタと仮命名)
       CSplitterWnd  m_SplitMain;  // メインフレームを左右分割する為に使用する分割ウインドウ(メインスプリッタと命名)
       CSplitterWnd  m_SplitSub;  // 左右分割されたウインドウの右ペインを上下分割するために使用する分割ウインドウ(サブスプリッタと仮命名)
       CSplitterWnd  m_SplitSub;  // 左右分割されたウインドウの右ペインを上下分割するために使用する分割ウインドウ(サブスプリッタと命名)
     // ...
     // ...
  }
  }
136行目: 136行目:
  CMainFrm.cpp
  CMainFrm.cpp
   
   
  #include  "CPaneADoc.h"
  #include  "CPaneDoc.h"
  #include  "CPaneAView.h"  // CPaneAViewクラスのヘッダをインクルード
  #include  "CPaneAView.h"  // CPaneAViewクラスのヘッダをインクルード
  #include  "CPaneBView.h"  // CPaneBViewクラスのヘッダをインクルード
  #include  "CPaneBView.h"  // CPaneBViewクラスのヘッダをインクルード
146行目: 146行目:
  {
  {
     // ...
     // ...
     m_SplitMain.CreateStatic(    //  メインスプリッタを作成
     if(FALSE == m_SplitMain.CreateStatic(    //  メインスプリッタを作成
      this,                      //  メインスプリッタの親ウインドウを指定。ここではメインフレームを分割するのでthisを指定
                  this,                      //  メインスプリッタの親ウインドウを指定。ここではメインフレームを分割するのでthisを指定
      1,                        //  メインスプリッタの行分割数を指定
                  1,                        //  メインスプリッタの行分割数を指定
      2);                       //  メインスプリッタの列分割数を指定
                  2))                       //  メインスプリッタの列分割数を指定
 
    {
     m_SplitSub.CreateStatic(      // サブスプリッタを作成
      return FALSE;
      &m_SplitMain,              //  サブスプリッタの親ウィンドウはm_SplitMain
    }
      2,                        //  サブスプリッタの行分割を指定
      1,                        //  サブスプリッタの列分割を指定
     if(FALSE == m_SplitSub.CreateStatic(      // サブスプリッタを作成
      WS_CHILD | WS_VISIBLE,           //  サブスプリッタのスタイルを指定
                  &m_SplitMain,              //  サブスプリッタの親ウィンドウはm_SplitMain
      m_SplitMain.IdFromRowCol(0,1)); //  子ウィンドウIDを指定。m_SplitMainの行0(=1行目)列1(=2列目)のIDを取得
                  2,                        //  サブスプリッタの行分割を指定
 
                  1,                        //  サブスプリッタの列分割を指定
                  WS_CHILD | WS_VISIBLE,           //  サブスプリッタのスタイルを指定
                  m_SplitMain.IdFromRowCol(0, 1))) //  子ウィンドウIDを指定。m_SplitMainの行0(=1行目)列1(=2列目)のIDを取得
    {
      return FALSE;
    }
     m_SplitMain.CreateView(        //  ペインAを作成
     m_SplitMain.CreateView(        //  ペインAを作成
       0,                          //  メインスプリッタの行番号を指定
       0,                          //  メインスプリッタの行番号を指定
       0,                          //  メインスプリッタの列番号を指定
       0,                          //  メインスプリッタの列番号を指定
       RUNTIME_CLASS(CPaneAView),  //  ペインAを管理するViewクラスCPaneAViewを指定。
       RUNTIME_CLASS(CPaneAView),  //  ペインAを管理するViewクラスCPaneAViewを指定。
       CSize(20, 0),              //  ペインのサイズ
       CSize(320, 240),              //  ペインのサイズ
       pContext);
       pContext))
 
    {
      return FALSE;
    }
     m_SplitSub(                    //  ペインBを作成
     m_SplitSub(                    //  ペインBを作成
       0,                          //  サブスプリッタの行番号を指定
       0,                          //  サブスプリッタの行番号を指定
       0,                          //  サブンスプリッタの列番号を指定
       0,                          //  サブンスプリッタの列番号を指定
       RUNTIME_CLASS(CPaneBView),  //  ペインBを管理するViewクラスCPaneBViewを指定。
       RUNTIME_CLASS(CPaneBView),  //  ペインBを管理するViewクラスCPaneBViewを指定。
       CSize(100, 0),             //  ペインのサイズ
       CSize(320, 120),           //  ペインのサイズ
       pContext);
       pContext))
 
    {
      return FALSE;
    }
     m_SplitSub(                    //  ペインCを作成。
     m_SplitSub(                    //  ペインCを作成。
       1,                          //  サブスプリッタの行番号を指定
       1,                          //  サブスプリッタの行番号を指定
       0,                          //  サブンスプリッタの列番号を指定
       0,                          //  サブスプリッタの列番号を指定
       RUNTIME_CLASS(CPaneCView),  //  ペインCを管理するViewクラスCPaneCViewを指定。
       RUNTIME_CLASS(CPaneCView),  //  ペインCを管理するViewクラスCPaneCViewを指定。
       CSize(0, 0),                 //  ペインのサイズ
       CSize(320, 120),             //  ペインのサイズ
       pContext);
       pContext))
    {
      return FALSE;
    }
     // ...
     // ...
    return TRUE;
  }
  }
  </source>
  </source>