Сделай Сам Свою Работу на 5

СРЕДСТВА ВЗАИМОДЕЙСВИЯ ЧЕЛОВЕКА С ВЫЧИСЛИТЕЛЬНОЙ СИСТЕМОЙ





 

Методические указания к выполнению контрольной работы

для студентов заочного факультета специальности 1-53 01 02–

“Автоматизированные системы обработки информации”

 

Могилев 2010


УДК 004.42:004.43

ББК 32.97

 

Рекомендовано к опубликованию

учебно-методическим управлением

ГУВПО «Белорусско-Российский университет»

 

Одобрено кафедрой «АСУ» «___» 2010 г., протокол №

 

Составитель ст. преподаватель Ю. В. Вайнилович

 

Рецензент к.т.н., доц. В. А. Широченко

 

Средства взаимодействия человека с вычислительной системой. Методические указания к лабораторным и контрольным работам для студентов специальности 1-53 01 02– “Автоматизированные системы обработки информации”. – Могилев: Белорусско-Российский университет, 2007. – 32 с. Методические указания составлены в соответствии с программой дисциплины “Средства взаимодействия человека с вычислительной системой”

 

 

Учебное издание

 

СРЕДСТВА ВЗАИМОДЕЙСТВИЯ ЧЕЛОВЕКА С ВЫЧИСЛИТЕЛЬНОЙ СИСТЕМОЙ

 

 

Ответственный за выпуск

 

Технический редактор

 

Компьютерная верстка



 

Подписано в печать Формат 60×84 1/ 16 Бумага офсетная. Гарнитура Таймс.

Печать трафаретная. Усл. печ. л. Уч.-изд. л. Тираж экз. Заказ №

 

Издатель и полиграфическое исполнение:

Государственное учреждение высшего профессионального образования

«Белорусско-Российский университет»

ЛИ № 02330/375 от 29.06.2004г.,

212005, г. Могилев, пр. Мира, 43.

© ГУВПО «Белорусско-Российский

университет», 2007


 

1 Пример постановки задачи

 

На рисунке изображены кривые Серпинского 1 и 2 порядков. Составьте программу по­строения кривых 1, 2, 3, 4 и 5 порядков, так что центры этих кривых совпадают.

 

 

Требования:

1. Через пункты главного меню должны быть доступны следующие действия:

* Параметры: Толщина, Порядок, Сепараторная линия, Цвет(стандартная панель).

* Рисование: Отобразить, Скрыть, Мерцание, Скорость (показывает диалоговую панель).

* Справка: О программе (выводит идентификационную панель), Справочник(вход в справочник);

* Выход (завершает работу программы).

2. Пункты меню Толщина, Порядоквыполнить в виде зависимых переключателей,пункт меню Мерцаниепри выборе помечать «галочкой».



3.Пункты меню продублировать кнопками панели инструментов. Организовать всплывающие подсказки.

4. Организовать всплывающее меню, дублирующее пункт «Рисование» главного меню.

5. Создать строку состояния, в которой отображать следующие данные: порядок кривой, толщину линии.

6.Подключить обработку клавиш «+» и «-» масштабирующих график в целом с шагом 10%.

7. Диалоговая панель «Скорость»: скорость перерисовки выбирается радиопереключателями. Предусмотреть значения по умолчанию.

8. Диалоговое окно «О программе …» должно появляться при выборе соответствующего пункта меню. Представляет собой идентификационную панель (указать сведения об авторе: фамилия, группа, курс).

9.Продублировать пункты главного меню клавишами-акселераторами.

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

 


2 Требования к отчету

 

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

1 Работа выполняется на листах А4 машинописным способом (шрифт 12-14, межстрочный интервал - одинарный). Следует пронумеровать страницы и оставить на них поля: справа – не менее 3 см для замечаний преподавателя, остальные поля – 2,5 см.

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



3 Вставляемые фрагменты программного кода должны быть структурированы при помощи отступов, пустых строк или иных разделителей.

4 Рисунки должны быть подписаны. На них должна иметься ссылка в тексте работы.

Отчет состоит из следующих разделов:

- Описание обрабатываемых сообщений;

- Разработка системы меню;

- Ресурсы;

- Справочная система.

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

То есть, требуется дать краткий комментарий программному коду.

В разделе «Разработка системы меню» привести схему главного меню, указать способы реализации отдельных пунктов (зависимые переключатели, независимые переключатели, динамические т. д.).

Также следует описать другие виды меню, если они есть.

В разделе «Ресурсы» требуется описать содержимое файла ресурсов (имеет расширение .rc), а также ресурсы, создаваемые в основной программе (клавиши-акселераторы, панели инструментов и т.д.).

В разделе «Справочная система». В данном разделе требуется описать все инструменты, использованные для разработки справки. Привести файл проекта справки (имеет расширение .hpj).


3 Пример отчета

 

3.1 Описание обрабатываемых сообщений

 

Например, вот полный программный код для сообщения WM_CREATE:

 

case WM_CREATE:

{

DRAW = true ;

ANIMATE = false ;

DRAW_SPEED = 0 ;

LENGTH = 10 ;

GRADE = 3 ;

THICKNESS = 1 ;

COLOR_RED = 30 ;

COLOR_GREEN = 110 ;

COLOR_BLUE = 160 ;

 

hMainMenu = CreateMenu() ;

hParamMenu = CreatePopupMenu() ;

hThicknessMenu = CreatePopupMenu() ;

hGradeMenu = CreatePopupMenu() ;

hDrawMenu = CreatePopupMenu() ;

hHelpMenu = CreatePopupMenu() ;

 

hPopupMenu = CreatePopupMenu() ;

 

CreateMenuItem(hPopupMenu,"Отобразить",0, IDC_DRAW_A, NULL, FALSE, MFT_RADIOCHECK) ;

CreateMenuItem(hPopupMenu,"Скрыть", 1, IDC_DRAW_B, NULL, FALSE, MFT_RADIOCHECK) ;

CreateMenuItem(hPopupMenu, NULL, 2, 0, NULL, FALSE, MFT_SEPARATOR) ;

CreateMenuItem(hPopupMenu, "&Цвет", 3, IDC_PARAM_COLOR, NULL, FALSE, MFT_STRING) ;

CreateMenuItem(hPopupMenu, NULL, 4, 0, NULL, FALSE, MFT_SEPARATOR) ;

CreateMenuItem(hPopupMenu, "&Мерцание",5, IDC_DRAW_ANIMATE, NULL, TRUE, MFT_STRING) ;

 

CreateMenuItem(hThicknessMenu, "&1", 0, IDC_PARAM_THICK_A, NULL, FALSE, MFT_RADIOCHECK) ;

CreateMenuItem(hThicknessMenu, "&2", 1, IDC_PARAM_THICK_B, NULL, FALSE, MFT_RADIOCHECK) ;

CreateMenuItem(hThicknessMenu, "&3", 2, IDC_PARAM_THICK_C, NULL, FALSE, MFT_RADIOCHECK) ;

CreateMenuItem(hThicknessMenu, "&4", 3, IDC_PARAM_THICK_D, NULL, FALSE, MFT_RADIOCHECK) ;

SetMenuItem(hThicknessMenu, IDC_PARAM_THICK_A, MFS_CHECKED, FALSE) ;

 

CreateMenuItem(hGradeMenu, "&1", 0, IDC_PARAM_GRADE_A, NULL, FALSE, MFT_RADIOCHECK) ;

CreateMenuItem(hGradeMenu, "&2", 1, IDC_PARAM_GRADE_B, NULL, FALSE, MFT_RADIOCHECK) ;

CreateMenuItem(hGradeMenu, "&3", 2, IDC_PARAM_GRADE_C, NULL, FALSE, MFT_RADIOCHECK) ;

CreateMenuItem(hGradeMenu, "&4", 3, IDC_PARAM_GRADE_D, NULL, FALSE, MFT_RADIOCHECK) ;

CreateMenuItem(hGradeMenu, "&5", 4, IDC_PARAM_GRADE_E, NULL, FALSE, MFT_RADIOCHECK) ;

SetMenuItem(hGradeMenu, IDC_PARAM_GRADE_C, MFS_CHECKED, FALSE) ;

 

CreateMenuItem(hParamMenu, "&Толщина", 0, IDC_PARAM_THICK, hThicknessMenu, FALSE, MFT_STRING) ;

CreateMenuItem(hParamMenu, "&Порядок", 1, IDC_PARAM_GRADE, hGradeMenu, FALSE, MFT_STRING) ;

CreateMenuItem(hParamMenu, NULL, 2, 0, NULL, FALSE, MFT_SEPARATOR) ;

CreateMenuItem(hParamMenu, "&Цвет", 3, IDC_PARAM_COLOR, NULL, FALSE, MFT_STRING) ;

//---------------------------------------------------------------------------//

CreateMenuItem(hMainMenu,"&Параметры", 0, IDC_CAP_PARAM, hParamMenu, FALSE, MFT_STRING) ;

//---------------------------------------------------------------------------//

CreateMenuItem(hDrawMenu, "&Отобразить", 0, IDC_DRAW_A, NULL, FALSE, MFT_RADIOCHECK) ;

CreateMenuItem(hDrawMenu, "&Скрыть", 1, IDC_DRAW_B, NULL, FALSE, MFT_RADIOCHECK) ;

CreateMenuItem(hDrawMenu, NULL, 2, 0, NULL, FALSE, MFT_SEPARATOR) ;

CreateMenuItem(hDrawMenu, "&Мерцание", 3, IDC_DRAW_ANIMATE, NULL, TRUE, MFT_STRING) ;

CreateMenuItem(hDrawMenu, NULL, 4, 0, NULL, FALSE, MFT_SEPARATOR) ;

CreateMenuItem(hDrawMenu, "&Скорость", 5, IDC_DRAW_SPEED, NULL, TRUE, MFT_RADIOCHECK) ;

SetMenuItem(hDrawMenu, IDC_DRAW_A, MFS_CHECKED, FALSE) ;

//---------------------------------------------------------------------------//

CreateMenuItem(hMainMenu,"&Рисование", 1, IDC_CAP_DRAW, hDrawMenu, FALSE, MFT_STRING) ;

//---------------------------------------------------------------------------//

CreateMenuItem(hHelpMenu, "&О программе", 0, IDC_HELP_ABOUT, NULL, FALSE, MFT_STRING) ;

CreateMenuItem(hHelpMenu, "&Файл справки", 1, IDC_HELP_FILE, NULL, FALSE, MFT_STRING) ;

//---------------------------------------------------------------------------//

CreateMenuItem(hMainMenu,"&Справка", 2, IDC_CAP_HELP, hHelpMenu, FALSE, MFT_STRING) ;

//---------------------------------------------------------------------------//

CreateMenuItem(hMainMenu,"&Выход", 3, IDC_CAP_EXIT, NULL, FALSE, MFT_STRING) ;

//---------------------------------------------------------------------------//

SetMenu(hWindow,hMainMenu) ;

DrawMenuBar(hWindow) ;

 

hStatus = CreateStatusWindow(WS_CHILD | WS_VISIBLE, "", hWindow, IDC_STATUS) ;

SendMessage(hStatus, SB_SETTEXT, 0, (LONG)"Строка состояния") ;

 

Accelerators = CreateAcceleratorsTable() ;

if ( !Accelerators )

{

MessageBox(hwnd, "Ошибка при создании таблицы акселераторов!","Ошибка!",MB_OK | MB_ICONERROR) ;

PostQuitMessage(1) ;

}

hToolBar = CreateToolBar(hWindow) ;

 

return 0 ;

}

 

Вот что должно быть в отчете по этому сообщению.

Сообщение WM_CREATE возникает в момент создания окна. В данном сообщении создается главное меню. Ниже приведена часть программного кода, создающего пункт меню «Параметры»:

 

hMainMenu = CreateMenu() ;

hParamMenu = CreatePopupMenu() ;

 

CreateMenuItem(hParamMenu, "&Толщина", 0, IDC_PARAM_THICK, hThicknessMenu, FALSE, MFT_STRING) ;

CreateMenuItem(hParamMenu, "&Порядок", 1, IDC_PARAM_GRADE, hGradeMenu, FALSE, MFT_STRING) ;

CreateMenuItem(hParamMenu, NULL, 2, 0, NULL, FALSE, MFT_SEPARATOR) ;

CreateMenuItem(hParamMenu, "&Цвет", 3, IDC_PARAM_COLOR, NULL, FALSE, MFT_STRING) ;

 

SetMenu(hWindow,hMainMenu) ;

DrawMenuBar(hWindow) ;

 

 

Также создается строка состояния.

 

hStatus = CreateStatusWindow(WS_CHILD | WS_VISIBLE, "", hWindow, IDC_STATUS) ;

SendMessage(hStatus, SB_SETTEXT, 0, (LONG)"Строка состояния") ;

 

Для создания панели инструментов вызывается функция CreateToolBar(hWindow). В качестве параметра передается дескриптор окна, для которого создается панель инструментов. Панель инструментов состоит из 11 кнопок. Первые пять работают как радиопереключатели и позволяют выбирать порядок кривой, дублируют пункт меню Параметры/Линия. Шестая кнопка вызывает стандартную панель выбора цвета и дублирует пункт меню Параметры/Цвет. Следующие четыре кнопки позволяют выбирать толщину линии и дублируют пункт меню Параметры/ Толщина

Разработанная панель инструментов представлена на рисунке 1.

 

 

 

Рисунок 1 – Панель инструментов

 

 

Кроме того, создается таблица акселераторов путем вызова пользовательской функции CreateAcceleratorsTable() и осуществляется проверка ее корректного создания.

 

Рассмотрим в качестве примера сообщение WM_SIZE. Вот исходный программный код этого сообщения:

 

case WM_SIZE:

{

if ( hwnd == hWindow )

{

width = LOWORD(lParam) ;

height = HIWORD(lParam) ;

MoveWindow (hStatus, 0, 0, 0, 0, true) ;

MoveWindow (hToolBar, 0, 0, 0, 0, true) ;

InvalidateRect (hwnd, NULL, true) ;

}

break;

}

 

Вот как требуется объяснить этот код в отчете:

 

Сообщение WM_SIZE возникает при изменении размеров окна. В данном сообщении команды

 

MoveWindow (hStatus, 0, 0, 0, 0, true) ;

MoveWindow (hToolBar, 0, 0, 0, 0, true) ;

 

прижимают строку состояния к нижнему краю окна, а панель инструментов - к верхнему при изменении размеров окна.

 

Команды

 

width = LOWORD(lParam) ;

height = HIWORD(lParam) ;

 

определяют текущую ширину и высоту окна.

 

И т. д. для всех остальных сообщений.

 

 

3.2 Разработка системы меню

 

Система меню представлена на рисунке 2. Выпадающие подменю пунктов «Толщина» и «Порядок», а также пункты «Скрыть» и «Отобразить» выполнены как зависимые переключатели, пункт «Мерцание» выполнен как независимый переключатель (т. е. при выборе помечается флажком).

При выборе пунктов меню «Скорость», «О программе» и «Справка» открываются диалоговые окна.

 

Рисунок 2 – Схема главного меню программы

 

 

Также реализовано контекстное меню, дублирующее пункт Рисование главного меню. Его вид представлен на рисунке 3.

 

 

Рисунок 3 – Вид контекстного меню

 

 

3.3 Ресурсы

 

В программе разработаны и используются следующие ресурсы:

 

- Кнопки панели инструментов (рисунок 4). Имеет идентификатор IDB_BITMAP3.

 

Рисунок 4 – Панель инструментов

 

- Диалоговая панель «О программе». Имеет идентификатор IDD_ABOUT. Вызывается при выборе пункта меню «Справка/О программа». Обработка вызова происходит в сообщении WM_COMMAND:

 

case WM_COMMAND:

{

switch (LOWORD(wParam))

{

case IDC_HELP_ABOUT:

{

DialogBox(hInstance, MAKEINTRESOURCE(IDD_ABOUT), hwnd, (DLGPROC)DlgAbout) ;

break ;

}

}

break ;

}

 

В оконной функции диалоговой панели DlgAbout() обрабатывается одно сообщение WM_LBUTTONDOWN. Оно возникает при щелчке левой клавишей мыши внутри рабочей области окна и приводит к его закрытию. Программный код оконной функции представлен ниже.

 

INT_PTR DlgAbout(HWND hDlgWnd,UINT DlgMessage,WPARAM wParam,LPARAM lParam)

{

switch (DlgMessage)

{

case WM_LBUTTONDOWN:

{

EndDialog(hDlgWnd, true) ;

return true ;

}

}

return false ;

}

 

Рисунок 5 – Диалоговое окно «О программе»

 

- Диалоговая панель «Скорость» (рисунок 6). Имеет идентификатор IDD_DIALOG1. Вызывается при выборе пункта меню «Рисование/Скорость». Обработка вызова происходит в сообщении WM_COMMAND:

 

case WM_COMMAND:

{

switch (LOWORD(wParam))

{

case IDC_HELP_ABOUT:

{

DialogBox(hInstance, MAKEINTRESOURCE(IDD_DIALOG1), hwnd, (DLGPROC)DlgSpeed) ;

break ;

}

}

break ;

}

 

Здесь также следует описать оконную функцию данного диалогового окна.

Рисунок 6 – Диалоговая панель «Скорость»

 

- Иконка для программы (рисунок 7). Имеет идентификатор IDI_ICON1.

 

Рисунок 7 – Программная иконка

 

- Клавиши-акселераторы. Акселераторы создаются в сообщении WM_CREATE, путем вызова пользовательской функции CreateAcceleratorsTable(). Код функции представлен ниже.

-

HACCEL CreateAcceleratorsTable()

{

ACCEL Accelerators[14];

 

Accelerators[0].fVirt = FCONTROL | FVIRTKEY ;

Accelerators[0].key = '1' ;

Accelerators[0].cmd = IDC_PARAM_THICK_A ;

 

Accelerators[1].fVirt = FCONTROL | FVIRTKEY ;

Accelerators[1].key = '2' ;

Accelerators[1].cmd = IDC_PARAM_THICK_B ;

 

Accelerators[2].fVirt = FCONTROL | FVIRTKEY ;

Accelerators[2].key = '3' ;

Accelerators[2].cmd = IDC_PARAM_THICK_C ;

 

Accelerators[3].fVirt = FCONTROL | FVIRTKEY ;

Accelerators[3].key = '4' ;

Accelerators[3].cmd = IDC_PARAM_THICK_D ;

 

Accelerators[4].fVirt = FCONTROL | FVIRTKEY ;

Accelerators[4].key = 'Q' ;

Accelerators[4].cmd = IDC_PARAM_GRADE_A ;

 

Accelerators[5].fVirt = FCONTROL | FVIRTKEY ;

Accelerators[5].key = 'W' ;

Accelerators[5].cmd = IDC_PARAM_GRADE_B ;

 

Accelerators[6].fVirt = FCONTROL | FVIRTKEY ;

Accelerators[6].key = 'E' ;

Accelerators[6].cmd = IDC_PARAM_GRADE_C ;

 

Accelerators[7].fVirt = FCONTROL | FVIRTKEY ;

Accelerators[7].key = 'R' ;

Accelerators[7].cmd = IDC_PARAM_GRADE_D ;

 

Accelerators[8].fVirt = FCONTROL | FVIRTKEY ;

Accelerators[8].key = 'T' ;

Accelerators[8].cmd = IDC_PARAM_GRADE_E ;

 

Accelerators[9].fVirt = FCONTROL | FVIRTKEY ;

Accelerators[9].key = 'C' ;

Accelerators[9].cmd = IDC_PARAM_COLOR ;

 

Accelerators[10].fVirt = FCONTROL | FVIRTKEY ;

Accelerators[10].key = 'I' ;

Accelerators[10].cmd = IDC_DRAW_A ;

 

Accelerators[11].fVirt = FCONTROL | FVIRTKEY ;

Accelerators[11].key = 'O' ;

Accelerators[11].cmd = IDC_DRAW_B ;

 

Accelerators[12].fVirt = FCONTROL | FVIRTKEY ;

Accelerators[12].key = 'A' ;

Accelerators[12].cmd = IDC_DRAW_ANIMATE;

 

Accelerators[13].fVirt = FCONTROL | FVIRTKEY ;

Accelerators[13].key = 'X' ;

Accelerators[13].cmd = IDC_CAP_EXIT ;

 

return CreateAcceleratorTable(Accelerators,14) ;

}

 

Как видно из кода создаются 14 клавиш-акселераторов. Все они работают в сочетании в с клавишей CTRL. Для задания клавиш используется их виртуальный код, о чем говорит константа FVIRTKEY. Каждая клавиша связана с пунктом меню, чей идентификатор указан в поле cmd.

 

3.4 Справочная система

 

Справочная система разработана в формате .hlp. Вызывается при выборе пункта меню «Справка/Справка». Обработка вызова осуществляется в сообщении WM_COMMAND:

 

case WM_COMMAND:

{

switch (LOWORD(wParam))

{

case IDC_HELP_FILE:

{

WinHelp(hwnd,"Help.hlp",HELP_FINDER,NULL) ;

return 0 ;

}

}

break ;

}

 

 

Для удобства пользования справочником, разработано содержание, представленное на рисунке 8.

 

Рисунок 8 – Содержание справки

 

 

Также разработан предметный указатель, представленный на рисунке 9.

 

Рисунок 9 – Предметный указатель справки

 

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

 

Рисунок 10 – Страница справки с элементами управления

 

Содержание файла проекта справки представлено ниже.

 

[OPTIONS]

LCID=0x419 0x0 0x0 ; Русский

REPORT=Yes

CNT=HELP.cnt

HLP=HELP.hlp

 

[FILES]

HELP_SERP.rtf

 

 


Литература

 

1 Ганеев Р.М. Проектирование интерфейса пользователя средствами WIN 32 API. – М:Горячая линия-Телеков, 2001. – 336 с.

2 Гультяев А. Help. Разработка справочных систем. Учебный курс. – СПб: Питер, 2004. – 272 с.

3 Петзольд, Ч. Программирование для Windows 95. В двух томах. - СПб: BHV – Санкт-Петербург.

 








Не нашли, что искали? Воспользуйтесь поиском по сайту:



©2015 - 2024 stydopedia.ru Все материалы защищены законодательством РФ.