Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Шпоры к экзамену ВизСр.doc
Скачиваний:
1
Добавлен:
01.03.2025
Размер:
242.18 Кб
Скачать
  1. Многодокументный интерфейс mdi.

Существуют два основных стиля интерфейсов пользователя: интерфейс с одним документом (single-document interface, SDI) и интерфейс со многими документами (multiple-document interface, MDI). Текстовый редактор с интерфейсом SDI позволяет открыть только один документ - чтобы открыть другой, следует закрыть предыдущий. В приложении MDI Вы можете открыть сразу несколько документов.

Контейнер для форм

В приложение Visual Basic можно добавить MDI форму, которая будет служить контейнером для подчиненных форм. Подчиненная форма - это обычная форма, у которой значение свойства MDIChild равно True. В режиме выполнения подчиненные окна помещаются внутри родительского окна MDI формы. Меню команд MDI формы может быть общим для всех подчиненных окон, или, если подчиненная форма имеет собственное меню команд, оно замещает меню формы контейнера. При закрытии формы-контейнера закрываются все подчиненные формы.

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

Dim NewDoc As New Form1

' Создать новый экземпляр формы

NewDoc.Show

' Показать на экране

Поскольку много подчиненных форм имеют одинаковое имя и одинаковый код, то не следует в коде программы (если код используется несколькими экземплярами формы) использовать имя формы. В модуле формы для ссылок на текущую форму используйте ключевое слово Me.

Unload Me ' Выгрузить текущую форму

На форму MDI можно поместить управляющий элемент, если он имеет свойство Align (Выстроить) или является невидимым в режиме выполнения.

  1. Рисование с помощью cdc.

Основа работы с графикой в Windows и естественно в MFC является GDI. Работа с этой библиотекой производится всегда в независимости от того куда направляется вывод на принтер или экран или куда еще подальше. Всегда пользуемся функциями GDI. Для реализации всего этого реализовано три механизма.

Контекст устройства его можно представить как лист бумаги, на котором будет производиться рисование.

Драйвер устройства - это специальная программа которая умеет этот самый контекст перевести на конкретное устройство

Режим отображения - это настройки растрирования. На данный момент все устройства вывода работают с растрами даже если вы создаете векторный чертеж. Раньше были старые такие плоттеры типа HP Draf Pro, которые умели рисовать линиями с помощью разноцветных карандашей :-), но на данный момент большинство устройств переводят все в растр и выводят на печать или еще куда.

В MFC есть несколько контекстов устройств и все наследники от CDC, вот смотрите сами.

CObject -

| |-> CClientDC

| |-> CWindowDC

CDC------->|-> CMetaFileDC

|-> CPaintDC

Каждый из контекстов рисует в определенном месте, то есть каждый контекст предназначен для рисования в определенной области. Странно, но CPaintDC и CClientDC очень похожи. Оба эти класса предназначены для рисования внутри клиентской области окна. То есть они не могут добраться до меню или рамки окна. Чем они отличаются ? CPaintDC используется только тогда когда отвечает на сообщение WM_PAINT. Вместе с этим сообщением будет передана та область, которая требует перерисовки. Ведь окно может быть на экране не полностью. Для извешения о перерисовке вызываются функции BeginPaint и EndPaint без их вызова Windows будет считать, что перерисовка не произошла. Вот в этом и существенные отличия CPaint, в его конструкторе автоматически вызывается BeginPaint, а в деструкторе EndPaint. CClientDC не выполняет эти функции автоматически.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]