
Типы диалоговых окон:
1)Модальное (получает управление интерфейсом приложения и удерживает его до тех пор, пока его не закроет пользователь).
2)Немодальные (применяются реже. Оставаясь открытым, позволяет работать с несколькими окнами приложения одновременно).
Последовательность создания диалогового окна:
1)Проектирование в редакторе диалогового окна с включением в него всех требуемых элементов управления и настройки их свойств;
2)Создание класса, производного от CDialog, с описанием в нем переменных и обработчиков событий, а также указанием используемого шаблона диалога;
3)Определение для каждого элемента управления переменной или объекта,
4)Определение необходимых методов обработчиков событий.
5)Фактически вызов конструктора и создание диалогового окна:
Для модального диалога |
Для немодального диалога |
вызов конструктора с параметром, указывающим ID шаблона диалога |
вызов конструктора без параметра шаблона диалога |
вызов метода DoModal |
вызов метода Create с параметром, указывающим ID шаблона диалога |
6)Переопределение метода OnInitDialog и включение в него вызова метода базового класса и необходимых действий по инициализации диалогового окна.
В.17 Архитектура Документ-Вид. У вас есть один класс, который отвечает за данные, и второй класс, который отвечает за представление этих данных на экране. Таким образом эти два класса разделяют обязанности, и каждый отвечает за свою собственную часть работы. При этом у одного документа может быть несколько видов. Класс документа отвечает за такие вещи, как хранение данных, за сохранение их на диске и чтение с диска и др. Класс вида – за представление данных на экране (прорисовка, обновление и т. п.).
Пример номер один - Word. Вы можете просматривать ваш файл в разных режимах (обычном, режиме структуры). И документ при этом у вас тот же самый, только его виды будут различаться.
Пример номер два. Программа - часы. Она просто показывает время. Но они могут быт со стрелками, электронными.
В основе архитектуры лежит:
1)Фрейм 2)Документ 3)Представление/Вид
Когда вы начинаете делать свое приложение с использованием AppWizard, то на шаге 1 мастера вы задаете, будет ли или нет использоваться архитектура Документ-Вид: однодокум или многодокум интерф.
Отметим, то CView - это оконный класс (потомок класса CWnd), а CDocument - нет.
В вашей программе класс документа - это потомок класса CDocument, а класс вида происходит от класса CView непосредственно или через другие классы. Предка для вашего класса Вида вы можете выбрать на шаге 6 AppWizard'а. (а также когда пользователь выбирает команды Open и New в меню File.)
В.18 Определение стандартов для программных компонентов и является задачей спецификации управляющих элементов ActiveX (ActiveX Controls).
Путем установления стандартных интерфейсов, способных поддерживать СОМ-объекты для выполнения определенных действий, спецификация управляющих элементов ActiveX предоставляет общую схему построения мощных компонентов. А так как компонентам нужен способ эффективного взаимодействия с использующим их кодом, то спецификация управляющих элементов ActiveX определяет и правила создания контейнеров управляющих элементов (control containers) клиентских программ, знающих как работать с этими элементами.
Управляющие элементы ActiveX могут быть весьма сложны. Чтобы понять, что они из себя представляют и как работают, стоит рассмотреть их с точки зрения трех групп: конечных пользователей, разработчиков приложений, которые применяют управляющие элементы ActiveX, и с точки зрения создателей управляющих элементов
В.19 Определение стандартов для программных компонентов и является задачей спецификации управляющих элементов ActiveX (ActiveX Controls).
Путем установления стандартных интерфейсов, способных поддерживать СОМ-объекты для выполнения определенных действий, спецификация управляющих элементов ActiveX предоставляет общую схему построения мощных компонентов.
Флажки (checkbox) используют, когда необходимо выбрать два или более варианта из предложенных. Если требуется выбор лишь одного варианта, то для этого следует предпочесть переключатели (RadioButton).
Список – это динамическая структура, иными словами, массив данных некоторого типа, размеры которого могут меняться в процессе выполнения программы
В.20 Линейный индикатор - прямоугольник, заполняющийся синими квадратиками (блоками). Чем больше заполнен прямоугольник, тем ближе завершение процесса. Обычно этот элемент управления используют в качестве индикатора хода выполнения некоторого процесса в приложении, например загрузка или сохранение файла.
Когда пользователь должен ввести некоторую величину, не выходящую за пределы заданного диапазона, используется линейный регулятор.
Инкрементный регулятор предназначен для получения от пользователя значения некоторого параметра в заданном диапазоне. Он выглядит, как пара стрелок, на которых пользователь может щелкать мышью, увеличивая или уменьшая значение параметра.
Рядом с инкрементным регулятором размещается другой элемент управления - текстовое поле, в котором выводится числовое значение параметра. Если инкрементный регулятор получил фокус ввода, то параметр можно менять и с помощью клавиш управления курсором "вверх" и "вниз".
Очень часто встречаются приложения, в которых пользователю предлагается ввести дату. В Visual C++ 6.0 добавился класс CDateTimeCtrl, который позволяет ввести значение вручную или вызвать календарь и выбрать необходимую дату из него.
Элемент формирования IP-адресов предназначен для проверки правильности ввода IP-адреса (адреса Internet-протокола), например: 192.168.100.46
IP-адреса состоят из четырех чисел, разделенных символом точки. Каждое число должно находиться в диапазоне от 1 до 255. Элемент управления ввода IP-адреса гарантирует, что введенная информация будет полностью соответствовать этому формату.
В.22,21 Для установки цвета пикселя используются метод SetPixel. Для получения значения цвета пиксела - метод GetPixel.
Атрибуты контекста устройства:
1)Текущее перо (любая линия рисуется пером. Если метод не содержит параметра, задающего перо, то для рисования берётся текущее, которое можно установить методом SelectObject).
2)Текущая позиция пера (чтобы изменить координаты текущей позиции пера, используются метод MoveTo. Чтобы нарисовать прямую линию от текущей позиции пера до нужной точки с логическими координатами (x,y), используется метод LineTo. После выполнения метода LineTo заданная в нем точка становится текущей позицией пера).
Если имеется массив точек и требуется соединить линией каждую следующую точку с предыдущей, можно использовать метод PolyLine, в котором первый параметр - указатель на массив элементов типа POINT, а второй равен количеству точек.
Следующий метод аналогичен PolyLine за исключением того, что он устанавливает текущую позицию пера равной последней точке массива – PolyLineTo.
Если же требуется соединить между собой все точки, содержащиеся в массиве, можно вызвать метод PolyPolyline.
Фигуры: прямоугольник (Rectangle); эллипс (Ellipse); скругленный прямоугольник (RoundRect); сегмент эллипса (Chord); сектор эллипса (Pie); замкнутый многоугольник; составной замкнутый многоугольник.
В.23, 21 Для вывода графической информации существует набор функций:
1)Методы рисования линий: LineTo, MoveTo, Polyline, Arc, ArcTo…
2)Методы рисования замкнутых фигур: Ellipse, Rectangle, Polygon, Pie, Chord …
3)Методы вывода текста: TextOut, DrawText …
4)Функции работы с растровым изображением: GetPixel, SetPixel …
Отдельная категория функций работы с контекстом устройства по переключению режимов и установке параметров вывода графической информации:
перо (pen) - задает режим вывода линий (цвет, толщина, стиль);
кисть (brush) - регулирует режим закраски фигур (цвет, стиль);
шрифт (font) - задает свойства шрифта, которым выводится текст;
палитра (palette) - задает набор используемых в DC цветов;
область (region) - используются для задания clipping regions - областей отсечения, вне которых вывод графики блокируется.
Работа с графическими объектами производится с помощью их дескрипторов (число, задающее номер какого-либо ресурса) - HDC, HPEN, HBRUSH, HFONT и т.д.
Создание и удаление объектов производится с помощью функций CreatePen, DeleteObject.
//hdc - дескриптор контекста устройства
HPEN hWhitePen, hBlackPen, hOldPen;
HBRUSH hBlackBrush, hOldBrush;
hWhitePen = CreatePen(PS_SOLID, 1, RGB(255, 255, 255));
hBlackPen = CreatePen(PS_SOLID, 1, RGB(0, 0, 0));
hBlackBrush = CreateSolidBrush(RGB(0, 0, 0));
// нарисовать белый квадрат
hOldPen = SelectObject(hdc, hWhitePen); MoveTo(hdc, 10, 10);
LineTo(hdc, 100, 10); LineTo(hdc, 100, 100); LineTo(hdc, 10, 100); LineTo(hdc, 10, 10);
В.24, 25 GDI – объектно-ориентированная библиотека для вывода графики.
Система предусматривает три категории объектов: пользователь, интерфейс графических устройств (GDI) и ядро.
Система использует объекты пользователя, чтобы поддерживать управление окном; объекты GDI, чтобы поддерживать графику; объекты ядра, чтобы поддерживать управление памятью, процесс исполнения кода и межпроцессорное взаимодействие (IPC).
Некоторые приложения требуют использования графики. Эта графика может быть в форме линий, текста, растровых отображений. Для предоставления приложениям функциональных возможностей работы с графикой Windows имеет набор функций, называемых интерфейсом с графическими устройствами (GDI).
Функции GDI дают вашему приложению возможности рисования, не зависящие от используемого устройства представления.