- •0915 “Компьютерная инженерия”специальностей:
- •7.091501 "Компьютерные системы и сети"
- •7.091502 "Системное программирование
- •Оглавление
- •Общие положения
- •1. Получение и вывод информации о вычислительной системе
- •1. Получение и вывод информации о вычислительной системе
- •1.1. Цель работы
- •1.2. Указания по подготовке к выполнению лабораторной работы
- •1. 3. Обзор темы работы
- •Функции и структуры для получения информации о вычислительной системе
- •1.4. Задание на лабораторную работу
- •Контрольные вопросы и задания
- •2. Графический интерфейс пользователя (graphical user interface, gui)
- •2.1. Цель работы
- •2. 2. Указания по подготовке к выполнению лабораторной работы
- •2.3. Обзор темы работы
- •2 .4. Задание на лабораторную работу
- •2.5. Контрольные вопросы и задания
- •3. Программирование интерфейса пользователя и эвм
- •3.1. Цель работы
- •3. 2. Указания по подготовке к выполнению лабораторной работы
- •3. 3. Обзор темы работы
- •Поток необработанного ввода
- •Фрагмент примера для организации работы с клавиатурой
- •3.4. Задание на лабораторную работу
- •3.5. Контрольные вопросы и задания
- •4. Многозадачность и многопоточность
- •4. 1. Цель работы
- •4.2. Указания по подготовке к выполнению лабораторной работы
- •4.3. Обзор темы работы
- •4.4. Задание на лабораторную работу
- •5.5. Контрольные вопросы и задания
- •Список литературы
1. Получение и вывод информации о вычислительной системе
1.1. Цель работы
Ознакомление с концепцией контекстного представления устройств в современных операционных системах, получение практических навыков по составлению, написанию и отладке программ, осуществляющих аппаратно-независимый вывод информации на экран дисплея, принтеры, и другие периферийные устройства, представленные контекстами. Изучение функций получения информации о вычислительной системе.
Разработка Windows-приложения, реализующего функции получения и вывода информации о вычислительной системе.
1.2. Указания по подготовке к выполнению лабораторной работы
Необходимо изучить принцип построения и логику работы Windows-приложения, обратив внимание на порядок создания приложения (формирование структуры класса окна, регистрация класса, написание оконной процедуры, создание и отображение окна, цикл обработки сообщений).
Необходимо освоить основные принципы контекстной концепции представления устройств вывода информации, структуру данных контекстов, а также порядок использования основных функций работы с контекстами устройств.
При подготовке к работе необходимо изучить методические указания, а также разделы, указанные в [16, c.4-52], [17, c.7-26], [16, c.57-62], [17, c.28-32].
1. 3. Обзор темы работы
Любое оконное приложение, написанное под Windows должно содержать в себе следующие элементы:
Функцию регистрации класса окна.
Функцию создания окна.
Оконную процедуру.
Цикл обработки сообщений.
Далее по тексту приводится пример простейшей программы под Windows, которая выводит на экран окно приложения с надписью "Привет, мир!". Дааммы;
г) проверка правильности выполнения задания (тестирование).
Выполнение отчета и защита лабораторной работы.
Содержание отчета
Отчет должен содержать:
- титульный лист с наименованием лабораторной работы и данными исполнителя;
цель работы;
задание;
описание алгоритма решения поставленной задачи;
листинг программы с комментариями и пояснениями;
результаты работы программы и их анализ;
выводы;
1. Получение и вывод информации о вычислительной системе
1.1. Цель работы
Ознакомление с концепцией контекстного представления устройств в современных операционных системах, получение практических навыков по составлению, написанию и отладке программ, осуществляющих аппаратно-независимый вывод информации на экран дисплея, принтеры, и другие периферийные устройства, представленные контекстами. Изучение функций получения информации о вычислительной системе.
Разработка Windows-приложения, реализующего функции получения и вывода информации о вычислительной системе.
1.2. Указания по подготовке к выполнению лабораторной работы
Необходимо изучить принцип построения и логику работы Windows-приложения, обратив внимание на порядок создания приложения (формирование структуры класса окна, регистрация класса, написание оконной процедуры, создание и отображение окна, цикл обработки сообщений).
Необходимо освоить основные принципы контекстной концепции представления устройств вывода информации, структуру данных контекстов, а также порядок использования основных функций работы с контекстами устройств.
При подготовке к работе необходимо изучить методические указания, а также разделы, указанные в [16, c.4-52], [17, c.7-26], [16, c.57-62], [17, c.28-32].
1. 3. Обзор темы работы
Любое оконное приложение, написанное под Windows должно содержать в себе следующие элементы:
Функцию регистрации класса окна.
Функцию создания окна.
Оконную процедуру.
Цикл обработки сообщений.
Далее по тексту приводится пример простейшей программы под Windows, которая выводит на экран окно приложения с надписью "Привет, мир!". Дакна
szTitle, // имя приложения
WS_OVERLAPPEDWINDOW, // стиль окна
CW_USEDEFAULT, // положение по Х
CW_USEDEFAULT, // положение по Y
CW_USEDEFAULT, // размер по Х
CW_USEDEFAULT, // размер по Y
NULL, // описатель родительского окна
NULL, // описатель меню окна
hInstance, // указатель приложения
NULL); // параметры создания.
if (!hWnd) // Если окно не создалось, функция возвращает FALSE
{
return FALSE;
}
ShowWindow(hWnd, nCmdShow); // Показать окно
UpdateWindow(hWnd); // Обновить окно
return TRUE; //Успешное завершение функции
}
// FUNCTION: WndProc(HWND, unsigned, WORD, LONG)
// Оконная процедура. Принимает и обрабатывает все
// сообщения, приходящие в приложение
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
PAINTSTRUCT ps;
HDC hdc;
RECT rt;
switch (message)
{// Сообщение приходит при создании окна
case WM_CREATE: break;
case WM_PAINT: // Перерисовать окно
// Начать графический вывод
hdc = BeginPaint(hWnd, &ps); // Область окна для рисования
GetClientRect(hWnd, &rt);
DrawText(hdc, "Привет, мир!", -1, &rt,
DT_SINGLELINE|DT_CENTER | DT_VCENTER);
// Закончить графический вывод
EndPaint(hWnd, &ps); break;
case WM_DESTROY: // Завершение работы
PostQuitMessage(0);
break;
default:
// Обработка сообщений, которые не обрабо//таны пользователем
return DefWindowProc(hWnd, message, wParam, lParam);
}
return 0;
}
Подробное описание параметров функций регистрации, создания окна и оконной процедуре можно узнать при помощи MSDN или Win32 Programmer's Reference, установленных на рабочих местах.
Следует обратить внимание, что в дальнейшем по тексту методических указаний будет отсутствовать такое подробное рассмотрения программ, а будут приведены ряд функций, которые соответствуют теме занятия. При необходимости получения их описания необходимо использовать вышеуказанные справочные системы или соответствующую литературу (см. п. Указания по подготовке к выполнению лабораторной работы)
Контекст устройства фактически является структурой данных, которая внутренне поддерживается GUI. Контекст устройства связан с конкретным устройством вывода информации, таким как дисплей, принтер, плоттер. Некоторые значения в контексте устройства являются графическими "атрибутами", которые определяют некоторые особенности работы функций рисования. Например, для функции TexOut, эти атрибуты задают цвет текста, цвет фона, положение в окне при выводе и т.п.
Перед осуществлением вывода, программа должна получить описатель контекста, все операции по выводу осуществлять с использованием описателя контекста, после чего, программа должна освободить описатель контекста.
В данной работе необходимо использовать следующие функции API: BeginPaint или CetDC для получения описателя контекста устройства и EndPaint или ReleaseDC для его уничтожения. Следует отметить, что при вызове BeginPaint и EndPaint обновляет фон рабочей области и устанавливает рабочую область в действительное состояние. Получение рабочей области окна можно выполнить при помощи функции GetClientRect. При этом, использовать контекст, полученный при помощи BeginPaint, можно только для рисования в рабочей области окна. Вывод текста можно осуществлять при помощи функций
TextOut и DrawText. Информация о системных параметрах получается при помощи функций GetTextMetrics и GetSystemMetrcs.
