단일 문서 인터페이스 (SDI) 및 다중 문서 인터페이스 (MDI) 응용 프로그램에 있는 CFormView 클래스를 사용 하는 방법

참고: Microsoft Visual C++.NET (2002)는 Microsoft.NET Framework 제공 하는 관리 되는 코드 모델 및 관리 되지 않는 네이티브 Microsoft Windows 코드 모델을 모두 지원 합니다. 본이 문서의 정보는 관리 되지 않는 Visual C++ 코드에만 적용 됩니다.

참고: Microsoft Visual C++ 2005 Microsoft.NET Framework 제공 하는 관리 되는 코드 모델 및 관리 되지 않는 네이티브 Microsoft Windows 코드 모델을 모두 지원 합니다.

요약

CFormView 클래스 대화 상자 템플릿을 기반으로 하는 보기에 컨트롤을 배치 하려면 편리한 방법을 제공 합니다. 일반적인 절차는 CFormView를 사용 하 여 클래스 설명서에서 설명 하 고 VIEWEX 및 CHKBOOK 샘플 응용 프로그램에서 Microsoft Foundation 클래스 (MFC)의 버전을 보여 줍니다 2.x 이상. 그러나 이러한 응용 프로그램 함은 보여 주지 폼의 초기 크기와 동일 하 게 프레임 창의 초기 크기를 설정 합니다.

다음 단원에서는 단일 문서 인터페이스 (SDI) 또는 폼 주위로 초기 프레임 창 크기를 조정, 프레임의 스타일을 변경 하 고 양식에서 단추를 사용 하는 MDI 문서를 닫는 CFormView를 기준으로 다중 문서 인터페이스 (MDI) 응용 프로그램 만들기를 지 원하는 데 필요한 단계입니다.

자세한 내용

다음 단계는 기본 보기로 CFormView를 사용 하 여 MFC 응용 프로그램 마법사 응용 프로그램을 만드는 방법을 설명 합니다.
  1. AppWizard를 사용 하 여 SDI 또는 MDI 응용 프로그램을 생성 합니다. 설정 프로젝트의 리소스 파일에 대 한 올바른 스타일을 사용 하 여 대화 상자 템플릿에 삽입 됩니다.

    Visual Studio 6.0:

    해당 응용 프로그램 마법사 단계 6에서 뷰 클래스를 선택 합니다. 콤보 상자의 기본 클래스 CFormView 기본 클래스로 CFormView 를 지정 하려면 선택 합니다.

    Visual Studio.NET 또는 Visual Studio 2005:

    AppWizard의 1 단계에서 생성 한 클래스를 선택 합니다. 콤보 상자의 기본 클래스 CFormView 기본 클래스로 CFormView 를 지정 하려면 선택 합니다.
  2. OnUpdate() 멤버 함수를 재정의 하 고 UpdateData()를 호출 하 여 현재 문서 데이터를 사용 하 여 멤버 변수를 업데이트 하 고 대화 상자 데이터 교환 (DDX)을 수행 하는 CFormView 설명서에 명시 합니다.

    참고: UpdateData 이며 가상 DoDataExchange 표준으로 호출 되 고 파생된 클래스는 기본 클래스를 호출 하면 됩니다. 를 호출 하기 위해 CFormView 설명서에 나와 있는 UpdateData를 무시 하지 않습니다.
  3. 폼 보기의 초기 크기를 설정 하려는 경우 OnInitialUpdate() 함수를 재정의 합니다. 아래 텍스트는 약간 달리 SDI 또는 MDI 응용 프로그램에서이 단계에 대 한 추가 정보를 제공 합니다.

주위는 CFormView 주 SDI 프레임의 크기를 변경합니다.

App Studio에서 설계 된 폼에 대 한 적절 한 크기 (해당 뷰 클래스로 CFormView 사용) 하는 SDI 응용 프로그램의 주 프레임 크기를 변경 하려면 다음과 같이, CFormView에서 파생 된 클래스에서 OnInitialUpdate() 함수를 재정의 합니다.
      void CMyFormView::OnInitialUpdate()      {
CFormView::OnInitialUpdate();
GetParentFrame()->RecalcLayout();
ResizeParentToFit(); // default argument is TRUE
}

ResizeParentToFit() 함수는 사용자 응용 프로그램 기본 틀 (스크롤 막대는 필요한 경우 자동으로 추가 됩니다)의 크기를 변경할 때 크기가 변경 양식을 금지 하지 않습니다. 폼 보기의 부모 프레임 창의 스타일을 수정 하려면 응용 프로그램 마법사에서 생성 된 CMainFrame 클래스에서 PreCreateWindow() 함수를 재정의할 수 있습니다. 예를 들어, WS_THICKFRAME 스타일을 제거 하 고 사용자가 창 크기를 변경할 것을 금지 하에 해당 하는 PreCreateWindow()를 선언 합니다. H 해당 하는 다음 코드를 추가 합니다. CPP:
      BOOL CMainFrame::PreCreateWindow(CREATESTRUCT &cs)      {
cs.style &= ~WS_THICKFRAME;
return CFrameWnd::PreCreateWindow(cs);
}

주위는 CFormView MDI 자식 프레임의 크기를 변경합니다.

위에서 설명한 MDI 자식 프레임의 크기를 변경 하는 과정은 비슷하지만 SDI 응용 프로그램의 주 프레임 크기를 변경 하려면. 그러나 RecalcLayout() 호출이 필요 하지 않습니다.

폼 보기에는 MDI 자식 프레임의 크기를 변경 하려면 다음과 같이 CFormView에서 파생 된 클래스에서 OnInitialUpdate() 함수를 재정의 합니다.
      void CMDIFormView::OnInitialUpdate()      {
CFormView::OnInitialUpdate();
ResizeParentToFit(); // Default argument is TRUE.
}

응용 프로그램을 ResizeParentToFit() 함수에 대 한 기본 인수를 재정의 하는 경우 위에서 설명한 대로 SDI 응용 프로그램의 경우와 기본적으로 동일한 결과 낳습니다 발생 합니다. 또한 하위 창이 전체 화면 또는 바깥쪽 MDI 주 프레임에 대 한 너무 큰 수 있습니다.

(예: WS_THICKFRAME 스타일 제거 하 여 창의 크기를 변경할 수 없음) MDI 자식 프레임 스타일을 변경 하려면 MDI 자식 창 클래스를 파생 하 고 위의 SDI 예에서 볼 수 있듯이 PreCreateWindow 함수를 재정의 합니다.

닫기 단추를 사용 하 여 MDI 폼

만들려면 단추는 문서 양식에 CFormView 클래스에 BN_CLICKED 메시지에 대 한 메시지 처리기를 추가 합니다. CFormView 단추 기본 IDOK 또는 IDCANCEL 식별자 없는 있는지 확인 하십시오. 이 경우 메시지 맵 및 단추에 대 한 잘못 된 함수에 잘못 된 항목이 생성 됩니다.

위치에 메시지 처리기를 다음 코드를 사용 하 여 파일 메뉴의 닫기 명령을 시뮬레이트할 수 있습니다.
      void CMyForm::OnClickedButton1()      {
PostMessage(WM_COMMAND, ID_FILE_CLOSE);
}

문서에 연결 된 IsModified() 멤버 함수는 TRUE를 반환 하는 경우 파일을 저장 하 라는 메시지를 나타내는이 메서드는 폼을 닫습니다.
속성

문서 ID: 98598 - 마지막 검토: 2017. 1. 12. - 수정: 1

피드백