MDI 샘플: 문서/뷰 아키텍처를 사용하지 않는 MDI 설명

업데이트: 2007년 11월

MDI 샘플에서는 문서/뷰 아키텍처를 사용하지 않는 MFC의 MDI(다중 문서 인터페이스) 지원을 사용합니다.

MDI 샘플에 대한 자세한 내용은 MDIDOCVW를 참조하십시오.

MDI에서는 Microsoft Windows 타이머, CColorDialogCBitmap과, 창의 기본 커서 변경 방법을 보여 줍니다.

보안 정보:

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

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

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

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

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

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

샘플 빌드 및 실행

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

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

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

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

MDI 샘플 응용 프로그램에서는 두 가지 서로 다른 형식의 MDI 자식 창이 있는 부모 창을 표시합니다. 이 MDI 자식 창 중 하나는 볼이 이리저리로 튀어 다니는 Bounce 창이고 다른 하나는 "Hello, World!"라는 텍스트를 표시하는 Hello 창입니다. 각 창 형식의 인스턴스를 여러 개 만들 수 있습니다.

새 MDI 자식 창을 만들려면 File 메뉴에서 New Bounce 또는 New Hello를 클릭합니다. 두 MDI 자식 창 모두 해당 창이 활성화될 때 표시되는 메뉴를 결정합니다. 또한 두 창 모두에 Color 메뉴가 있습니다. 이 메뉴에서 색을 선택하면 튀어 다니는 볼이나 Hello 텍스트의 색이 업데이트됩니다. 특정 색을 선택할 수 있는 Color 대화 상자를 호출하려면 Custom 항목을 선택합니다.

Bounce 창에는 화면에서 이동하는 볼의 속도를 선택할 수 있는 Speed 메뉴도 있습니다.

Bounce 창을 최소화하면 정적 아이콘으로 표시되는 대신, 아이콘에서 작은 볼이 이리저리로 튀어 다닙니다. 반면, Hello 창은 보통 아이콘으로 표시됩니다.

문서 및 뷰를 사용하지 않는 MDI

응용 프로그램 마법사에서 생성된 MDI 응용 프로그램과 달리 이 샘플 응용 프로그램에서는 프레임워크의 문서 및 뷰 지원을 사용하지 않습니다. 따라서 이 응용 프로그램에서는 문서 템플릿을 사용하지 않으며 응용 프로그램의 InitInstanceAddDocTemplate을 호출하지 않습니다.

그러나 이 응용 프로그램은 프레임워크의 MDI 지원을 완전히 사용합니다. CMainFrameCMDIFrameWnd에서 파생되었으며 CBounceWndCHelloWndCMDIChildWnd에서 파생되었습니다. 또한 Window 메뉴에 있는 Tile과 같은 명령은 프레임워크의 기본 CMDIFrameWnd 구현에 의해 처리됩니다.

CBounceWndCHelloWnd는 모두 Create를 재정의하지만 프레임워크의 MDI 지원을 사용하는 데 이 재정의가 꼭 필요한 것은 아닙니다. Create의 재정의를 통해 창의 기본 커서 및 아이콘을 변경하는 방법을 이해할 수 있습니다. 창의 기본 커서 또는 아이콘을 변경하려면 AFXRegisterWndClass를 호출한 다음 Create를 호출할 때 WNDCLASS의 이름을 전달하여 새 WNDCLASS를 등록해야 합니다.

키워드

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

AfxGetInstanceHandle, AfxRegisterWndClass, CBitmap::CreateCompatibleBitmap, CCmdUI::SetCheck, CColorDialog::DoModal, CColorDialog::GetColor, CDC::BitBlt, CDC::CreateCompatibleDC, CDC::DeleteDC, CDC::DrawText, CDC::Ellipse, CDC::FillRect, CDC::GetDeviceCaps, CDC::SelectObject, CDC::SetBkColor, CDC::SetTextColor, CFrameWnd::LoadFrame, CFrameWnd::rectDefault, CGdiObject::DeleteObject, CMDIChildWnd::Create, CMenu::LoadMenu, CWinApp::InitInstance, CWnd::DestroyWindow, CWnd::GetClientRect, CWnd::GetCurrentMessage, CWnd::GetDC, CWnd::Invalidate, CWnd::KillTimer, CWnd::MessageBox, CWnd::OnCreate, CWnd::OnPaint, CWnd::OnSize, CWnd::OnTimer, CWnd::ReleaseDC, CWnd::SetTimer, CWnd::ShowWindow, CWnd::UpdateWindow, GetSysColor, LOWORD, LoadCursor, LoadIcon, MAKEINTRESOURCE, RGB, max, min

참고:

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

참고 항목

기타 리소스

MFC 샘플