1. 程式人生 > >VC++ MFC 對話方塊 視窗分割

VC++ MFC 對話方塊 視窗分割

找了幾個教程都比較早了

1).插入三個IDD_FORMVIEW


2)新增類:FormView1, FormView2,FormView3 基類:CFormView

3).在Dlg.h中新增

3.1

#include "FormView1"
#include "FormView2"

#include "FormView3”

3.2在Dlg.h中新增

  1. public:  
  2.     afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);  
  3. public:  
  4.     CFrameWnd *m_pMyWnd;  
  5.     CSplitterWnd m_SplitterWnd;  
  6.     CSplitterWnd m_SplitterWnd2;  

3.3在DLg.cpp中定義Oncreate

  1. int CSplitDlgDlg::OnCreate(LPCREATESTRUCT lpCreateStruct)  
  2. {  
  3.     if (CDialog::OnCreate(lpCreateStruct) == -1)  
  4.         return -1;  
  5.     CString strMyClass = AfxRegisterWndClass(CS_VREDRAW |CS_HREDRAW,  
  6.         ::LoadCursor(NULL, IDC_ARROW),  
  7.         (HBRUSH
    ) ::GetStockObject(WHITE_BRUSH),  
  8.         ::LoadIcon(NULL, IDI_APPLICATION));  
  9.     // Create the frame window with "this" as the parent
  10.     m_pMyWnd = new CFrameWnd;  
  11.     m_pMyWnd->Create(strMyClass,_T(""), WS_CHILD,  
  12.         CRect(0,0,200,200), this);  
  13.     m_pMyWnd->ShowWindow(SW_SHOW);     
  14.     if (m_SplitterWnd.CreateStatic(m_pMyWnd,1, 2) == NULL) 
    //1行2列
  15.     {  
  16.         return -1;  
  17.     }     
  18.     if(m_SplitterWnd2.CreateStatic(&m_SplitterWnd,2,1,WS_CHILD|WS_VISIBLE,m_SplitterWnd.IdFromRowCol(0,1)) == NULL)  
  19.     {  
  20.         return -1;  
  21.     }  
  22.     m_SplitterWnd.CreateView(0,0, RUNTIME_CLASS(CMyFormViewOne),  
  23.         CSize(100,100), NULL);  
  24.     m_SplitterWnd2.CreateView(0,0, RUNTIME_CLASS(CMyFormViewTwo),  
  25.         CSize(80,80), NULL);  
  26.     m_SplitterWnd2.CreateView(1,0, RUNTIME_CLASS(CMyFormViewThree),  
  27.         CSize(80,80), NULL);  
  28.  return 0;
  29. }

3.4在Dlg.cpp中OnInitDialog()新增

  1. CRect rect;  
  2. GetWindowRect(&rect);  
  3. ScreenToClient(&rect);  
  4. m_pMyWnd->MoveWindow(&rect);  
  5. m_pMyWnd->ShowWindow(SW_SHOW);  
最後結果是C崩了。。。mmp