Share via


VIEWEX 샘플: 여러 뷰, 스크롤 뷰 및 분할 창 설명

업데이트: 2007년 11월

VIEWEX 샘플에서는 다음을 보여 줍니다.

  • 창의 순서 및 수가 변경되지 않고 대개 각 창마다 서로 다른 뷰 클래스가 있는 정적 분할 창

  • 동일한 문서의 다른 뷰와 동기화된 상태로 있는 폼 뷰(CFormView)

  • 주로 라디오 단추 그룹 단추 데이터가 있는 DDX(Dialog Data Exchange)

VIEWEX의 문서는 간단합니다. 이 샘플의 문서 데이터는 문자열과 문자열 색으로 구성되어 있습니다.

보안 정보:

이 샘플 코드는 개념을 보여 주기 위해 제공되며 가장 안전한 코드 작성 방법을 제시하지 않을 수 있으므로 응용 프로그램이나 웹 사이트에서 사용할 수 없습니다. Microsoft는 샘플 코드를 원래 용도 이외의 다른 용도로 사용하는 경우 발생하는 부수적이나 파생적인 손해에 대해 책임을 지지 않습니다.

샘플 및 이를 설치하기 위한 지침을 가져오려면

  • Visual Studio의 도움말 메뉴에서 샘플을 클릭합니다.

    자세한 내용은 샘플 파일 찾기를 참조하십시오.

  • 최신 버전 및 전체 샘플 목록은 Visual Studio 2008 Samples 페이지에서 온라인으로 사용할 수 있습니다.

  • 컴퓨터의 하드 디스크에서도 샘플을 찾을 수 있습니다. 기본적으로 샘플과 추가 정보 파일은 \Program Files\Visual Studio 9.0\Samples\ 아래의 폴더에 복사됩니다. Visual Studio Express Edition의 경우에는 모든 샘플이 온라인에 있습니다.

샘플 빌드 및 실행

VIEWEX 샘플을 빌드하고 실행하려면

  1. 솔루션 파일인 viewex.sln을 엽니다.

  2. 빌드 메뉴에서 빌드를 클릭합니다.

  3. 디버그 메뉴에서 디버깅하지 않고 시작을 클릭합니다.

VIEWEX를 처음 실행하면 보여 줄 문서 창의 형식을 선택하는 New 대화 상자가 표시됩니다.

  • Simple Text - 현재 색을 사용하여 창의 가운데에 문자열을 표시합니다.

  • Input Form View - edit 컨트롤에서 문자열을 변경하고 라디오 단추 그룹에서 색을 선택하여 변경할 수 있는 폼(CFormView)을 제공합니다.

  • Splitter Frame with both- Simple Text 및 Input Form이 분할 창의 양쪽에 두 개의 창으로 나란히 표시됩니다. Input Form에서 문자열(여러 문자) 또는 색을 변경하면 Simple Text 뷰에도 자동으로 변경 내용이 적용됩니다.

  • Three-way Splitter Frame - 하나의 분할 창에 Input Form 뷰를 표시합니다. 다른 창은 분할 막대에 의해 두 개의 하위 창으로 분할되며, 위쪽 하위 창에는 Simple Text 뷰가 표시되고 아래쪽 하위 창에는 Color 뷰가 표시됩니다. Color 뷰에서는 뷰 전체를 현재 색으로 칠합니다.

입력 폼에 있는 edit 컨트롤을 사용하거나 Edit 메뉴에서 Change Data를 클릭하여 문자열을 변경할 수 있습니다.

또한 한 번에 여러 개의 문서를 볼 수 있습니다. 그러나 단순하게 하기 위해, 문서를 저장하거나 다시 열 수는 없으며 위의 창을 둘 이상 사용하여 동일한 문서를 볼 수도 없습니다.

정적 분할 창

VIEWEX에서 MDI 자식 창은 OnCreateClient를 재정의하여 해당 창의 클라이언트 영역 내에 1 x 6 크기의 분할 창을 만듭니다. 3방향 분할 창의 경우, VIEWEX는 1 x 2 크기의 분할 창 오른쪽 창에 두 번째 2 x 1 크기의 분할 창을 포함시킵니다.

VIEWEX는 CSplitterWnd::Create 대신 CSplitterWnd::CreateStatic을 호출하여 동적 분할 창 대신 정적 분할 창을 만듭니다. VIEWEX 분할 창의 각 창에는 서로 다른 뷰 클래스가 있습니다. VIEWEX는 각 창에 대해 CSplitterWnd::CreateView를 호출하여 CView 파생 클래스를 지정합니다. 첫 번째 창의 경우, VIEWEX는 CCreateContextm_pNewViewClass 멤버에 있는 OnCreateClient에 전달되는 문서 템플릿 개체의 고유 뷰 클래스를 사용합니다. 다른 창의 경우에는 해당 뷰의 RUNTIME_CLASS를 지정합니다.

폼 뷰

CInputView는 사용자가 필드 중 하나에 데이터를 입력할 때 변경 내용이 다른 뷰에도 즉시 반영되도록 폼 뷰를 다른 뷰와 동기화하는 방법을 보여 줍니다. CInputView는 해당 컨트롤 모두의 ON_EN_CHANGEON_BN_CLICKED를 중앙의 OnDataChange 메시지 처리기에 매핑하는 방법으로 이 작업을 수행합니다. OnDataChangeCView::UpdateData를 호출하여 화면의 데이터를 CInputView의 멤버 변수로 전송한 다음 해당 문서의 UpdateAllViews를 호출하여 다른 뷰에 변경 내용을 알립니다.

DDX(Dialog Data Exchange)

VIEWEX의 CInputView는 라디오 단추 그룹 단추 데이터의 DDX(Dialog Data Exchange)를 보여 줍니다. Iputvw.h에서는 라디오 단추 그룹에 있는 첫 번째 단추만 CInputView::DoDataExchange의 m_iColor 멤버 변수에 매핑됩니다. m_iColor는 선택된 라디오 단추를 나타내는 0부터 시작하는 서수 값(int)입니다.

키워드

이 샘플에서는 다음의 키워드를 보여 줍니다.

CDC::FillRect, CDialog::DoModal, CDocument::OnNewDocument, CDocument::UpdateAllViews, CFrameWnd::LoadFrame, CFrameWnd::OnCreateClient, CFrameWnd::SetActiveView, CObject::Serialize, CRect::Height, CRect::Width, CSplitterWnd::CreateStatic, CSplitterWnd::CreateView, CSplitterWnd::GetPane, CSplitterWnd::IdFromRowCol, CString::GetLength, CView::GetDocument, CView::OnActivateView, CView::OnDraw, CView::OnUpdate, CWinApp::AddDocTemplate, CWinApp::InitInstance, CWinApp::OnFileNew, CWnd::DoDataExchange, CWnd::GetClientRect, CWnd::OnMouseActivate, CWnd::ShowWindow, CWnd::UpdateData, CWnd::UpdateWindow, RGB, SetBkMode, SetTextAlign, SetTextColor, TextOut, max

참고:

이 샘플을 비롯한 일부 샘플은 Visual C++ 마법사, 라이브러리 및 컴파일러의 변경 내용을 반영하도록 수정되지 않았지만 해당 작업의 수행 방법을 보여 줍니다.

참고 항목

기타 리소스

MFC 샘플