- •А.Ю. Быков
- •Быков Александр Юрьевич
- •Подхода
- •Оглавление
- •Введение
- •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
Кнопка, контрольный переключатель, радио кнопка
Сообщение, приходящее от элементов управления WM_COMMAND.
Младшее слово wParam содержит значение идентификатора элемента управления. Старшее слово wParam определяет действия с кнопкой (нотификационные сообщения), некоторые возможные значения:
BN_CLICKED // «Нажатие» на элемент
BN_PAINT // Перерисовка элемента
BN_DOUBLECLICKED // Двойной щелчок
BN_SETFOCUS // Элемент получил фокус ввода с клавиатуры
BN_KILLFOCUS // Элемент потерял фокус ввода с клавиатуры
Сообщения, которые можно посылать элементам:
BM_GETCHECK BM_SETCHECK BM_GETSTATE BM_SETSTATE BM_SETSTYLE BM_CLICK BM_GETIMAGE BM_SETIMAGE
Текстовое поле
Сообщение от текстового поля, аналогичное как для кнопок- WM_COMMAND.
Некоторые нотификационные сообщения от текстового поля (старшее слово wParam):
EN_SETFOCUS // Элемент получил фокус ввода с клавиатуры
EN_KILLFOCUS // Элемент потерял фокус ввода с клавиатуры
EN_CHANGE // Текст в текстовом поле изменен
Основные сообщения, которые можно посылать текстовым полям:
WM_SETTEXT // Поместить текст в текстовое поле
WM_GETTEXT // Извлечь текст из текстового поля
Примеры
Поместить текст в текстовое поле:
SendDlgItemMessage(hwnd, IDC_EDIT1, WM_SETTEXT, 0, (LPARAM)Text);
Получить текст из текстового поля:
SendDlgItemMessage(hwnd, IDC_EDIT2, WM_GETTEXT, 255, (LPARAM)Text);
До этого где- то объявлен массив символов, в котором текст хранится как строка: char Text[256];
Список
Элементами списка являются строки. Индексация элементов начинается с нуля. Сообщение от списка такое же, как для рассмотренных выше элементов- WM_COMMAND.
Коды некоторых нотификационных сообщений, приходящих от списка (старшее слово wParam):
LBN_SELCHANGE // Выбор элемента изменен
LBN_DBLCLK // Двойной щелчок на элементе списка
LBN_SETFOCUS // Элемент получил фокус ввода с клавиатуры
LBN_KILLFOCUS // Элемент потерял фокус ввода с клавиатуры
Коды некоторых сообщений, посылаемых списку:
LB_ADDSTRING // Добавить строку в список
LB_INSERTSTRING // Вставить строку в список
LB_DELETESTRING // Удалить элемент из списка
LB_SETCURSEL // Установить выбор заданного элемента
LB_GETCURSEL // Получить индекс выбранного элемента
LB_GETTEXT // Получить текст из элемента
LB_GETCOUNT // Получить число элементов списка
LB_RESETCONTENT // Очистить список
Примеры посылки сообщений списку
Добавить строку текста в список:
SendDlgItemMessage(hwnd, IDC_LIST1, LB_ADDSTRING, 0, (LPARAM)Text);
Получить индекс выделенного элемента:
int i=SendDlgItemMessage(hwnd, IDC_LIST1, LB_GETCURSEL, 0, 0);
Извлечь строку из элемента с индексом i:
SendDlgItemMessage(hwnd, IDC_LIST1, LB_GETTEXT, i, (LPARAM)Text);
Удалить элемент с индексом i:
SendDlgItemMessage(hwnd, IDC_LIST1, LB_DELETESTRING, i, 0);
Очистить список:
SendDlgItemMessage(hwnd, IDC_LIST1, LB_RESETCONTENT, 0, 0);
1.3. Задачи и порядок выполнения работы
Условие задачи:
Разработать приложение на основе диалогового окна – калькулятор для вычисления арифметических операций (+ -). Все проведенные операции добавляются в список, который может быть очищен при нажатии кнопки. Калькулятор может иметь примерный вид, представленный на рисунке 1 (в зависимости от варианта задания).

Рисунок 1 – Приложение типа калькулятор
