MDI 샘플: 문서/뷰 아키텍처를 사용하지 않는 MDI 설명
업데이트: 2007년 11월
MDI 샘플에서는 문서/뷰 아키텍처를 사용하지 않는 MFC의 MDI(다중 문서 인터페이스) 지원을 사용합니다.
MDI 샘플에 대한 자세한 내용은 MDIDOCVW를 참조하십시오.
MDI에서는 Microsoft Windows 타이머, CColorDialog 및 CBitmap과, 창의 기본 커서 변경 방법을 보여 줍니다.
보안 정보: |
---|
이 샘플 코드는 개념을 보여 주기 위해 제공되며 가장 안전한 코드 작성 방법을 제시하지 않을 수 있으므로 응용 프로그램이나 웹 사이트에서 사용할 수 없습니다. Microsoft는 샘플 코드를 원래 용도 이외의 다른 용도로 사용하는 경우 발생하는 부수적이나 파생적인 손해에 대해 책임을 지지 않습니다. |
샘플 및 이를 설치하기 위한 지침을 가져오려면
Visual Studio의 도움말 메뉴에서 샘플을 클릭합니다.
자세한 내용은 샘플 파일 찾기를 참조하십시오.
최신 버전 및 전체 샘플 목록은 Visual Studio 2008 Samples 페이지에서 온라인으로 사용할 수 있습니다.
컴퓨터의 하드 디스크에서도 샘플을 찾을 수 있습니다. 기본적으로 샘플과 추가 정보 파일은 \Program Files\Visual Studio 9.0\Samples\ 아래의 폴더에 복사됩니다. Visual Studio Express Edition의 경우에는 모든 샘플이 온라인에 있습니다.
샘플 빌드 및 실행
MDI 샘플을 빌드하고 실행하려면
솔루션 파일인 mdi.sln을 엽니다.
빌드 메뉴에서 빌드를 클릭합니다.
디버그 메뉴에서 디버깅하지 않고 시작을 클릭합니다.
MDI 샘플 응용 프로그램에서는 두 가지 서로 다른 형식의 MDI 자식 창이 있는 부모 창을 표시합니다. 이 MDI 자식 창 중 하나는 볼이 이리저리로 튀어 다니는 Bounce 창이고 다른 하나는 "Hello, World!"라는 텍스트를 표시하는 Hello 창입니다. 각 창 형식의 인스턴스를 여러 개 만들 수 있습니다.
새 MDI 자식 창을 만들려면 File 메뉴에서 New Bounce 또는 New Hello를 클릭합니다. 두 MDI 자식 창 모두 해당 창이 활성화될 때 표시되는 메뉴를 결정합니다. 또한 두 창 모두에 Color 메뉴가 있습니다. 이 메뉴에서 색을 선택하면 튀어 다니는 볼이나 Hello 텍스트의 색이 업데이트됩니다. 특정 색을 선택할 수 있는 Color 대화 상자를 호출하려면 Custom 항목을 선택합니다.
Bounce 창에는 화면에서 이동하는 볼의 속도를 선택할 수 있는 Speed 메뉴도 있습니다.
Bounce 창을 최소화하면 정적 아이콘으로 표시되는 대신, 아이콘에서 작은 볼이 이리저리로 튀어 다닙니다. 반면, Hello 창은 보통 아이콘으로 표시됩니다.
문서 및 뷰를 사용하지 않는 MDI
응용 프로그램 마법사에서 생성된 MDI 응용 프로그램과 달리 이 샘플 응용 프로그램에서는 프레임워크의 문서 및 뷰 지원을 사용하지 않습니다. 따라서 이 응용 프로그램에서는 문서 템플릿을 사용하지 않으며 응용 프로그램의 InitInstance는 AddDocTemplate을 호출하지 않습니다.
그러나 이 응용 프로그램은 프레임워크의 MDI 지원을 완전히 사용합니다. CMainFrame은 CMDIFrameWnd에서 파생되었으며 CBounceWnd 및 CHelloWnd는 CMDIChildWnd에서 파생되었습니다. 또한 Window 메뉴에 있는 Tile과 같은 명령은 프레임워크의 기본 CMDIFrameWnd 구현에 의해 처리됩니다.
CBounceWnd와 CHelloWnd는 모두 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++ 마법사, 라이브러리 및 컴파일러의 변경 내용을 반영하도록 수정되지 않았지만 해당 작업의 수행 방법을 보여 줍니다. |