Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
СПро - методичка.pdf
Скачиваний:
32
Добавлен:
16.03.2016
Размер:
847.14 Кб
Скачать

13.Какие типы функций GDI Вы знаете?

14.Какие примитивы GDI Вы знаете?

15.Дайте характеристику метафайлам.

16.Что такое «сплайны Безье»? Каким образом их использовать? 17.Какие примитивы позволяют создавать функции API?

18.Дайте определение понятия «перо». Каким образом происходит создание, выбор и удаление перьев?

19.Что определяет режим рисования?

20.В чем особенность рисования полигонов?

21.Системы координат устройства. Чем отличаются физические и логические координаты?

22. Опишите процесс использования битовых образов.

3.СРЕДСТВА ВВОДА ИНФОРМАЦИИ

3.1.Цель работы

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

3.2. Указания по подготовке к выполнению лабораторной работы

Необходимо изучить основные элементы интерактивных программ, работающих на персональных компьютерах. Большинство приложений Windows95 активно используют пользовательский ввод с клавиатуры, а также поддерживают работу с мышью. Обязательным является рассмотрение программного представления устройств ввода внутри ядра Windows, а также системные и несистемные аппаратные сообщения, посредством которых осуществляется передача данных приложениям.

При подготовке к работе необходимо изучить конспект лекций по указанной теме, методические указания, а также разделы, указанные в [16, c.255-441], [17, c.88-101].

3.3. Обзор темы работы

Большинство программ, работающих под Windows активно используют средства интерактивного взаимодействия с пользователем – мышь, клавиатуру, а также программные средства – окна диалога.

При работе с клавиатурой следует уделить особое внимание изучению следующих вопросов: фокус ввода, аппаратные и символьные сообщения, виртуальные коды клавиш, работа с кареткой.

Мышь – это графическое устройство ввода информации с одной или более кнопками. Windows поддерживает однокнопочную, двухкнопочную или трехкнопочную мышь.

Работа приложений с клавиатурой и мышью основана на системе сообщений. Любое действие (нажатие клавиш, перемещение мыши и т.п.) приводит к тому, что Windows посылает сообщение активному приложению. Данное сообщение обрабатывается оконной процедурой приложения. Существует более 20 видов сообщений, получаемых программой от мыши и клавиатуры.

Следует отметить, что окна приложений обычно имеют в себе дочерние окна, к которым относятся кнопки (buttons), флажки (check boxes), переключа-

тели (radio buttons), текст (text strings), полосы прокрутки (scroll bars), окна ре-

дактирования (edit boxes), списки (list boxes). Дочернее окно обрабатывает сообщения мыши и клавиатуры и извещает родительское окно о том, что состояние дочернего окна изменилось. В этом случае дочернее окно становиться для родительского устройством ввода. Оно инкапсулирует особые действия, связанные с графическим представлением окна на экране, реакцией на пользовательский ввод, и извещения другого окна при вводе важной информации. Имеется возможность создавать свои собственные дочерние окна управления.

3.4. Задание на лабораторную работу

Вариант 1 Написать программу, которая следит за перемещением указателя мыши и

выводит его координаты в окне приложения. Если при выходе за окно правая кнопка мыши нажата, программа продолжает следить за перемещением мыши и выводить ее координаты.

Вариант 2 Написать программу телетайпа, которая выводит в окно приложения

символы нажатых клавиш. Место вывода текста может меняться при помощи курсора мыши.

Вариант 3 Написать программу перемещения простого изображения по окну при-

ложения по нажатию клавиш управления курсором. Вариант 4

Написать программу, рисующую прямоугольники при помощи курсора мыши. Нажатие правой кнопки мыши определяет положения углов прямоугольника. С помощью левой кнопки мыши можно нарисовать прямоугольник с цветом фона (очистка прямоугольной области).

Вариант 5 Написать программу, которая при помощи клавиш управления курсора

перемещает окружность по клиентской области окна. В клиентскую область поместить прямоугольник. При попадании окружности в прямоугольник – окружность меняет цвет.

Вариант 6.

Написать программу, которая рисует непрерывную линию при передвижении мыши по окну приложения с нажатой левой кнопкой. Изображение должно обновляться по приходу события WM_PAINT.

Вариант 7.

Написать программу, позволяющую рисовать линии. Нажатие левой кнопки мыши определяет первую точку линии. Не отпуская кнопки пользователь перемещает мышь во вторую точку отрезка. Отпускание кнопки приводит к фиксации второй точки линии. Во время движения с нажатой кнопкой мыши, линия должна перерисовываться.

Вариант 8.

Написать программу, эмулирующую работу мыши при помощи клавиатуры. По нажатию определенных клавиш курсор мыши передвигается в пределах окна приложения. При эмуляции нажатия левой клавиши происходит изменение цвета фона.

Вариант 9.

Написать программу, рисующую олимпийские кольца. По нажатию клавиш с цифрами 1-5 одно из колец с соответствующим номером меняет свой цвет. То же самое происходит при щелчке мыши на одном из колец.

Вариант 10.

Написать программу, которая рисует непрерывные линии в направлении, указанном нажатием клавиш «вверх», «вниз», «вправо», «влево». Предусмотреть вариант диагоналей. По нажатию правой клавиши мыши происходит очистка поля рисования, нажатие левой кнопки мыши меняет текущее положение точки рисования.

3.5. Контрольные вопросы и задания

1.Какие средства ввода информации Вы знаете?

2.Дайте определение таким понятием как «каретка» и «курсор»?

3.Чем отличаются аппаратные (keystrokes) и символьные (characters) сообщения?

4.Какие сообщения от клавиатуры обрабатываются оконной процедурой?

5.Перечислите сообщения, поступающие от мыши.

6.Что такое «фокус ввода»?

7.Как вы думаете, можно ли получить сообщения от мыши, если курсор находится за пределами окна?

8.Как рисовать за пределами окна приложения?

9.Как обрабатываются нажатия кнопки в рабочей области окна, создан-

ной функцией CreateWindow?

10.Каким образом можно получить информацию о наличии мыши в системе и ее характеристики?

4.ДОЧЕРНИЕ ОКНА УПРАВЛЕНИЯ

4.1.Цель работы

Ознакомление с концепцией дочерних окон операционной системы Windows, особенностями работы с предопределенными дочерними окнами, получение практических навыков по созданию и организации программного взаимодействия между главным окном программы и дочерними окнами.

4.2. Указания по подготовке к выполнению лабораторной работы

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

При подготовке к работе необходимо изучить конспект лекций по указанной теме, методические указания, а также разделы, указанные в [16, c.253-292].

4.3. Обзор темы работы

До сих пор, мы создавали приложение с одним окном, в которое выводили текст, графику, рисунки. Все сообщения приложению, фактически, обрабатывались оконной процедурой этого самого единственного окна. Предположим, что на окно положили какой-либо объект, обладающий совокупностью функций и особенностей отображения внутри вашего окна. Этот объект, конечно же, может формировать ваша программа (рисовать объект при помощи сообщения WM_PAINT, проверять, ни попал ли курсор мыши на объект при обработке WM_LBUTTONDOWN и т.п.). Однако, согласно объектно-ориентированному подходу к программированию, более красивый и удобный путь – выделить характеристики и функции поведения этого объекта в некоторую логическую структуру, которая сама будет обрабатывать предназначенные ей сообщения, будет сама себя рисовать и т.п. Существует возможность создания таких объектов, а также имеется некоторое число предопределенных в Windows объектов. Они получили название "Дочерние окна управления".

Такое название они получили потому, что неразрывно связаны с теми окнами, на которых они находятся и их поведение во многом определяется поведением главного или родительского окна. Каждый из вас видел дочерние окна: это кнопки (buttons), флажки (check boxes), окна редактирования (edit boxes), списки (list boxes), комбинированные списки (combo boxes), строки текста (text strings) и полосы прокрутки (scroll bars). Все перечисленные окна управления зарегистрированы в Windows (поэтому для них нет необходимости в выполнении функции RegisterClass) и для их создания достаточно выполнить функцию CreateWindow, указав одно из следующих имен: "button" – для кнопки, "static" – для текста, "scrollbar" –для полосы прокрутки, "edit" – для окна редактирования, "listbox" – для окна списка, "combobox" –для окна комбинированного списка.

Каждое дочернее окно создается с помощью вызова функции CreateWindow, где в параметре "родительское окно" указатель того окна, на котором создается окно. После этого, эти два окна неразрывно связаны. Положение дочернего окно четко определено в пределах родительского (его можно менять, но не выходя за рамки родительского окна), перемещение родительского окна происходит вместе с расположенным в нем дочерним. Оконная процедура родительского окна посылает сообщения дочерним окнам, а дочерние окна посылают сообщения обратно оконной процедуре.

Например, для создания кнопки необходимо выполнить функцию CreateWindow со следующими параметрами:

Имя класса

"button"

Текст окна

" Моя кнопка"

Стиль окна

WS_CHILD|WS_VISIBLE|BS_<style>

Положение по х

50

Положение по х

50

Ширина

60

Высота

30

Родительское окно

hwnd

Идентификатор дочернего окна

(HMENU) i

Описатель программы

hInstance

Дополнительный параметр

NULL

Третий параметр функции указывает на создание дочернего видимого окна, а также определяет стиль кнопки: нажимаемая кнопка (BS_PUSHBUTTON

или BS_DEFPUSHBUTTON), флажки (check boxes – BS_CHECKBOX, BS_AUTOCHECKBOX), переключатели (radio buttons – BS_RADIOBUTTON, BS_AUTORADIOBUTTON), групповое окно (group boxes – BS_GROUPBOX),

флажки на три состояния (BS_3STATE, BS_AUTO3STATE), кнопки, определяемые пользователем (BS_OWERDRAW).

Обратите внимание на 9 параметр, который является идентификатором (номером, "именем") кнопки. С помощью его родительское и дочернее окна могут опознавать друг друга. Следует отметить, что данный параметр определен в Windows как параметр типа HMENU, в следствии чего перед переменной стоит директива преобразования типов.

Все кнопки, когда вы щелкаете на их поверхности, посылают родительскому окну сообщение WM_COMMAND, указывая в параметре lParam описатель дочернего окна (возвращаемый также функцией CreateWindow при создании кнопок), в LOWORD(wParam) – идентификатор дочернего окна, о котором говорилось ранее, в HIWORD (wParam) – код уведомления.

Подробно с особенностями использования параметров в зависимости от типа дочернего окна можно ознакомится в конспекте лекций.

4.4. Задание на лабораторную работу

Вариант 1

Написать программу, просматривающую файлы в текстовом или бинарном виде. Программа содержит кнопки выбора типа открываемого файла, диалоговое окно просмотра каталогов диска и выбора открываемого файла. Содержимое файла выводится в клиентскую область главного окна, содержащую горизонтальную и вертикальную полосы скроллинга.

Вариант 2 Программа позволяет рисовать при помощи мыши линии, прямоугольни-

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

Вариант 3 В программе при помощи диалоговых окон организовать задание разме-

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

Вариант 4 Самостоятельно (без использования стандартного диалогового окна) ор-

ганизовать просмотр текущего каталога. Для вывода списка файлов использовать дочернее окно "listbox", имеющее полосу скроллинга. По выбору пользователем одного из файлов открывается диалоговое окно, содержащее информацию о файле: тип, размер, дата создания.

Вариант 5 В клиентской области окна расположить две фигуры: прямоугольник и

эллипс. Возле каждого из них разместить следующие дочерние окна:

-кнопка типа "checkbox", управляющая режимами "видимый" / "невидимый";

-две кнопки "pushbutton", вызывающие стандартное диалоговое окно выбора цвета, для задания цвета контура и заливки фигуры;

-элемент "combobox" для задания масштаба фигуры из следующего диапазона: 10%, 50%, 100%, 200%;

-две зависимые кнопки типа "radiobutton" выбирающие один из двух типов курсора, которые меняются при попадании мыши в область соответствующей фигуры.

Вариант 6 В клиентской области окна расположить прямоугольник и три полосы

скроллинга с диапазоном изменения от 0 до 255. Каждая из них соответствует одному из трех составляющих цвета (RGB) фона прямоугольника. Изменение

цвета фона происходит сразу же при изменении положения одной из полос скроллинга. При помощи кнопок – переключателей (radiobutton) организовать изменение разных стилей заливки (Hatch). Окно редактирование "edit" позволяет задать слово, которое выводится в центре прямоугольника.

Вариант 7 В клиентской области окна создать три кнопки, определяемые пользова-

телем (OWERDRAW). Кнопки должны быть аналогами нажимаемых кнопок (PUSHBUTTON). При помощи трех окон редактирования "edit" можно менять текст вышеуказанных кнопок. При помощи кнопок – переключателей (radiobutton) организовать отображение в поле кнопки иконок из ресурсного файла вместо текста. Три флажка (checkbox) позволяют делать невидимой соответствующую кнопку, определяемую пользователем.

Вариант 8 В ресурсном файле задать три битовых образа. В клиентской области ок-

на разместить три нажимаемые кнопки (pushbutton), по нажатию которых происходит смена выводимого в клиентскую область окна рисунка. Если, рисунок превышает размеры клиентской области окна, появляются горизонтальная и вертикальная полосы скроллинга, позволяющие просмотреть рисунок. Кнопка – флаг (checkbox) позволяет переключиться между двумя режимами: рисунок видим или нет. В последнем случае фон окна можно поменять при помощи стандартного диалогового окна выбора цвета, вызываемого при помощи меню.

Вариант 9 В ресурсном файле создать таблицу из 3 строк текста, которые использу-

ются основной программой при создании трех нажимаемых кнопок. Размеры кнопок выбираются автоматически исходя из длины соответствующе строки. Возле каждой из трех кнопок разместить элемент "combobox", содержащий эти же 3 строки и позволяющий изменить содержимое кнопок. Стандартное диалоговое окно выбора цвета, вызывающееся через меню и комбинацию быстрых клавиш, позволяет изменить цвет фона клиентской области окна.

Вариант 10

Создать окно списка (listbox), которое содержит список фамилий всех членов бригады. По выбору каждого из них (двойной щелчок мыши) в клиентской области окна создаются все возможные дочерние окна, содержащие текст (нажимаемые кнопки, флажки, переключатели, окна редактирования, статические окна), в которых в качестве текста содержится выбранная фамилия. Горизонтальные и вертикальные полосы скроллинга позволяют перемещать все вышеуказанные дочерние окна внутри клиентской области окна.

4.5. Контрольные вопросы и задания

1. Какие предопределенные дочерние окна управления Вы знаете?