
- •А.Ю. Быков
- •Быков Александр Юрьевич
- •Подхода
- •Оглавление
- •Введение
- •1. Лабораторная работа № 1. Изучение диалоговых окон и элементов управления в Win api
- •1.1. Цель и задачи работы, требования к результатам ее выполнения
- •1.2. Краткая характеристика объекта изучения
- •1.2.1. Классификация диалоговых окон
- •1.2.2. Окна сообщений
- •1.2.3. Создание модального диалогового окна
- •1.2.4. Элементы управления диалогового окна
- •Кнопка, контрольный переключатель, радио кнопка
- •Текстовое поле
- •Примеры
- •Примеры посылки сообщений списку
- •1.3. Задачи и порядок выполнения работы
- •Пример выполнения работы
- •1.4. Форма отчета по лабораторной работе
- •1.5. Вопросы для самоконтроля
- •2.1. Цель и задачи работы, требования к результатам ее выполнения
- •2.2. Краткая характеристика объекта изучения
- •2.2.1. Понятие класса и объекта
- •2.2.2. Доступность компонент класса
- •2.2.3. Основные элементы класса Компонентные данные и функции класса
- •Конструктор класса
- •Деструктор класса
- •2.3. Задачи и порядок выполнения работы
- •Пример выполнения работы
- •2.4. Форма отчета по лабораторной работе
- •2.5. Вопросы для самоконтроля
- •3.1. Цель и задачи работы, требования к результатам ее выполнения
- •3.2. Краткая характеристика объекта изучения
- •3.3. Задачи и порядок выполнения работы
- •Пример выполнения работы
- •3.4. Форма отчета по лабораторной работе
- •4.2.3. Особенности конструкторов при наследовании
- •4.2.4. Особенности деструкторов при наследовании
- •4.2.5. Переопределение функций. Виртуальные функции
- •4.3. Задачи и порядок выполнения работы
- •Пример выполнения работы
- •4.4. Форма отчета по лабораторной работе
- •5.3. Задачи и порядок выполнения работы
- •Пример выполнения работы
- •5.4. Форма отчета по лабораторной работе
- •6.2.2. Создание потока с помощью api – функций
- •6.2.3. Синхронизация потоков
- •1. Взаимное исключение.
- •3. Семафор
- •4. Событие
- •6.2.4. Синхронизация процессов
- •6.3. Задачи и порядок выполнения работы
- •Пример выполнения работы
- •6.4. Форма отчета по лабораторной работе
- •6.5. Вопросы для самоконтроля
- •7. Лабораторная работа № 7. Изучение библиотеки классов mfc
- •7.1. Цель и задачи работы, требования к результатам ее выполнения
- •7.2. Краткая характеристика объекта изучения
- •7.2.1. Обзор упрощенной иерархии классов библиотеки mfc
- •7.2.2. Состав простейшего приложения в mfc
- •7.2.3. Обработка сообщений в mfc
- •Некоторые функции обработчики
- •7.2.4. Вывод графики в mfc
- •Графические объекты
- •Добавление обработчиков сообщений и событий в однодокументном приложении
- •Вывод графики и перерисовка
- •7.3. Задачи и порядок выполнения работы
- •Пример выполнения работы
- •7.4. Форма отчета по лабораторной работе
- •7.5. Вопросы для самоконтроля
- •8. Лабораторная работа № 8. Изучение разработки приложений для платформы Microsoft .Net с использование библиотеки классов .Net Framework
- •8.1. Цель и задачи работы, требования к результатам ее выполнения
- •8.2. Краткая характеристика объекта изучения
- •8.2.1. Обзор платформы Microsoft .Net
- •8.2.2. Единая среда исполнения
- •8.2.4. Понятие управляемого кода
- •8.2.6. Система общих типов
- •8.2.7. Обзор библиотеки классов .Net Framework
- •8.2.8. Класс Form
- •8.2.9. Обработка событий
- •8.2.10. Основные элементы управления
- •8.4. Форма отчета по лабораторной работе
- •8.5. Вопросы для самоконтроля
- •Заключение
- •Рекомендуемые источники
- •Приложение а. Варианты заданий для выполнения лабораторных работ Варианты заданий для лабораторной работы № 1
- •Варианты заданий для лабораторной работы № 2
- •Варианты заданий для лабораторной работы № 3
- •Варианты заданий для лабораторной работы № 4
- •Варианты заданий для лабораторной работы № 5
- •Варианты заданий для лабораторной работы № 6
- •Часть I
- •Часть II
- •Варианты заданий для лабораторной работы № 7
- •Варианты заданий для лабораторной работы № 8
1.2. Краткая характеристика объекта изучения
1.2.1. Классификация диалоговых окон
Диалоговые окна можно классифицировать по следующим признакам:
Признак модальности:
модальные (блокируют работу пользователя с родительским окном до тех пор, пока пользователь модальное диалоговое окно не закроет);
немодальные (не блокируют работу пользователя с родительским окном).
По назначение:
окна сообщений;
стандартные (выбор файла, выбор цвета, выбор шрифта и др.);
специальные (создаются программистом для решения своих задач).
1.2.2. Окна сообщений
Функция для создания окна сообщений может иметь заголовок:
int MessageBoxA(HWND hWnd , // Хэндл родительского окна
LPCSTR lpText, // Текст в окне
LPCSTR lpCaption, // Заголовок
UINT uType); // Тип окна (наличие кнопок и иконка)
Возможные значения параметра uType задаются константами:
MB_OK
MB_OKCANCEL
MB_ABORTRETRYIGNORE
MB_YESNOCANCEL
MB_YESNO
MB_RETRYCANCEL
MB_ICONHAND
MB_ICONQUESTION
MB_ICONEXCLAMATION
MB_ICONASTERISK
Константы, задающие наличие кнопок и вид иконки (MB_ICON…), можно использовать совместно с помощью поразрядной операции «ИЛИ» ( | ).
Возвращаемое значение зависит от того, какая кнопка нажата для закрытия окна. Возможные значения:
IDOK
IDCANCEL
IDABORT
IDRETRY
IDIGNORE
IDYES
IDNO
1.2.3. Создание модального диалогового окна
Удобнее всего диалоговое окно вместе со своими элементами управления описывать в файле ресурсов. В этом случае функция для создания окна имеет заголовок:
DialogBox(hInstance, //Хэндл приложения
lpTemplate, //Строка-название ресурса окна
hWndParent, //Хэндл родительского окна
lpDialogFunc); //Указатель на функцию окна
Функция для закрытия окна:
BOOL EndDialog(HWND hDlg, // Хэндл закрываемого окна
int nResult); // Значение, которые вернет DialogBox при выходе
Для инициализации диалогового окна (задания начального состояния элементов управления, присвоения значений переменным и др.) необходимо обработать сообщение WM_INITDIALOG.
Ниже показан пример функции окна для диалогового окна, имеющего две стандартных кнопки Ok и Cancel.
BOOL CALLBACK DialogFun(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
switch(message)
{
case WM_INITDIALOG:
return TRUE;
case WM_COMMAND:
switch(LOWORD(wParam))
{
case IDOK:
case IDCANCEL:
EndDialog(hwnd, LOWORD(wParam));
return TRUE;
}
}
return FALSE;
}
Пример создания этого диалогового окна, определенного в файле ресурсов с идентификатором IDD_DIALOG1:
if (DialogBox(hInstance, MAKEINTRESOURCE(IDD_DIALOG1), 0, DialogFun)==IDOK)
MessageBox(0, "Нажата Ok", "Сообщение", MB_OK);
else
MessageBox(0, "Нажата Cancel", "Сообщение", MB_OK);
1.2.4. Элементы управления диалогового окна
Основные:
кнопка, контрольный переключатель, радиокнопка, текстовое поле, список,…
Общие или дополнительные (требуется подключение специальной библиотеки):
строка состояния, спин, регулятор, индикатор процесса, ...
Большинство элементов управления является разновидностями окон. Функция для получения хэндла элемента управления имеет заголовок:
HWND GetDlgItem(HWND hDlg, //Хэндл род. окна
int nIDDlgItem); //Идентификатор элемента управления
Функции для посылки сообщений элементам управления имеют заголовки:
LRESULT SendDlgItemMessage( HWND hDlg, // Хэндл диалогового окна
int nIDDlgItem, // Идентификатор элемента управления
UINT Msg, // Тип сообщения
WPARAM wParam, LPARAM lParam); // Параметры сообщения
LRESULT SendMessage(HWND hWnd, // Хэндл элемента управления
UINT Msg, // Тип сообщения
WPARAM wParam, LPARAM lParam); // Параметры сообщения
Рассмотрим некоторые элементы, которые необходимо использовать при выполнении лабораторной работы.