Поделиться через


Образец MDI: демонстрация интерфейса MDI без использования архитектуры документов и представлений

Обновлен: Ноябрь 2007

В образце MDI используется поддержка интерфейса MDI в библиотеке MFC без использования архитектуры документов и представлений.

Дополнительный образец интерфейса MDI см. в разделе MDIDOCVW.

Кроме того, в образце MDI показан таймер Microsoft Windows, классы CColorDialog и CBitmap, а также изменение стандартного курсора окна.

ahd07sdd.alert_security(ru-ru,VS.90).gifПримечание о безопасности.

Этот образец кода служит для демонстрации основных принципов и не предназначен для использования в приложениях или на веб-узлах, поскольку не может считаться примером наиболее безопасного кода. Корпорация Майкрософт не несет ответственности за случайные или косвенные убытки в случае использования образца кода не по назначению.

Чтобы получить образцы и инструкции по их установке, выполните следующие действия.

  • В меню Справка среды Visual Studio выберите пункт Примеры.

    Дополнительные сведения см. в разделе Поиск файлов примеров.

  • Самая последняя версия и полный список образцов доступны в Интернете на странице образцов Visual Studio 2008.

  • Кроме того, образцы находятся на жестком диске компьютера. По умолчанию образцы кода и файл Readme копируются в папку, находящуюся в папке \Program Files\Visual Studio 9.0\Samples\. Все образцы кода для экспресс-выпусков Visual Studio находятся в Интернете.

Построение и запуск образца

Построение и запуск образца MDI

  1. Откройте решение mdi.sln.

  2. В меню Построение выберите команду Построить.

  3. В меню Отладка выберите пункт Запуск без отладки.

Образец приложения MDI предоставляет родительское окно с двумя дочерними окна интерфейса MDI различного типа: окно Bounce, в котором прыгает мячик, и окно Hello, в котором выводится текст "Hello, World!" Можно создать несколько экземпляров окна каждого типа.

Выберите команду New Bounce или New Hello в меню File, чтобы создать новое дочернее окно интерфейса MDI. В обоих дочерних окнах интерфейса MDI определяется, какие меню отображаются, когда окно активно. В обоих окнах содержится меню Color. Когда из этого меню выбирается цвет, изменяется цвет прыгающего мячика или текста Hello. Выберите элемент Custom, чтобы вызвать диалоговое окно, из которого можно выбрать особый цвет.

В окне Bounce также находится меню Speed, где можно выбрать скорость, с которой мячик перемещается по экрану.

Заметьте, что если свернуть окно Bounce, его значок не будет статическим — по значку будет прыгать маленький мячик. Для окна Hello, напротив, используется обычный значок.

Интерфейс MDI без документов и представлений

В отличие от приложения MDI, создаваемого мастером приложений, этот образец приложения не использует поддержку документов и представлений, обеспечиваемую платформой. Таким образом, он не использует шаблоны документов, и метод InitInstance приложения не вызывает метод AddDocTemplate.

Тем не менее, это приложение полностью использует средства поддержки интерфейса MDI, доступные в платформе. Класс CMainFrame является производным от CMDIFrameWnd. Классы CBounceWnd и CHelloWnd являются производными от CMDIChildWnd. Команды в меню Window, такие как Tile, обрабатываются реализацией по умолчанию, доступной в классе CMDIFrameWnd платформы.

В классах CBounceWnd и CHelloWnd переопределяется метод Create, но такое переопределение не является необходимым для использования поддержки интерфейса MDI в платформе. Переопределение метода Create показывает, как изменить стандартный курсор и значок для окна. Для изменения стандартного курсора или значка окна необходимо зарегистрировать новый класс WNDCLASS путем вызова метода AFXRegisterWndClass и передачи имени WNDCLASS в ходе вызова Create.

Ключевые слова

В этом образце показаны следующие ключевые слова:

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

ahd07sdd.alert_note(ru-ru,VS.90).gifПримечание.

Некоторые образцы, включая данный, не модифицировались с учетом изменений в мастерах, библиотеках и компиляторе Visual C++, однако по-прежнему демонстрируют выполнение требуемой задачи.

См. также

Другие ресурсы

Примеры MFC