대화 상자 기반 MFC 프로젝트로 창 분할

1932 단어 MFC
1. 새 MFC 대화 상자 프로그램 My Splitter를 만듭니다.Dialog 리소스를 두 개 더 삽입하려면 IDD 를 선택해야 합니다.FORMVIEW 클래스의 대화상자입니다. 이 두 대화상자에 각각 새 클래스인 CMyFormView0과 CMyFormView1을 만들고, 기본 클래스는 CDialog를 선택하며, 반드시 CFormView를 선택하십시오.
2. 마스터 대화 상자 클래스 My Splitter Dlg.h에 두 개의 구성원 변수 추가
    CFrameWnd*      m_pMyFrame;    //       
    CSplitterWnd    m_cSplitter;     //       

3.
CMySplitterDlg에 WM 추가CREATE 메시지 응답, Oncreate 편집()
int CMySplitterDlg::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
    if (CDialog::OnCreate(lpCreateStruct) == -1)
        return -1;
    // Because the CFRameWnd needs a window class, we will create a new one. I just copied the sample from MSDN Help.
    // When using it in your project, you may keep CS_VREDRAW and CS_HREDRAW and then throw the other three parameters.
    //       
    CString strMyClass = AfxRegisterWndClass(CS_VREDRAW | CS_HREDRAW,  
                   ::LoadCursor(NULL, IDC_ARROW),    (HBRUSH) ::GetStockObject(WHITE_BRUSH),   
                  ::LoadIcon(NULL, IDI_APPLICATION));

    // Create the frame window with "this" as the parent
    m_pMyFrame = new CFrameWnd;
    m_pMyFrame->Create(strMyClass,_T(""), WS_CHILD,   CRect(0,0,300,300), this);
    m_pMyFrame->ShowWindow(SW_SHOW);

    // and finally, create the splitter with the frame as the parent
    m_cSplitter.CreateStatic(m_pMyFrame,1, 2); // Frame        1×2,      
    m_cSplitter.CreateView(0,0, RUNTIME_CLASS(CMyFormView0),   CSize(100,100), NULL);//     
    m_cSplitter.CreateView(0,1, RUNTIME_CLASS(CMyFormView1), CSize(100,100), NULL);//     

     return 0;
}

4. CMySplitterDlg:::OnInitDialog()에 Frame 표시
int CMySplitterDlg::OnInitDialog()
{
CDialog::OnInitDialog();

CRect cRect;
GetWindowRect(&cRect);
ScreenToClient(&cRect);
m_pMyFrame->MoveWindow(&cRect);
m_pMyFrame->ShowWindow(SW_SHOW);


return TRUE;
}

좋은 웹페이지 즐겨찾기