- •А.Ю. Быков
- •Быков Александр Юрьевич
- •Подхода
- •Оглавление
- •Введение
- •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
Пример выполнения работы
Для решения задачи в среде Microsoft Visual Studio 2013 было создано стандартное оконное приложение (проект типа Win32 Project, в русифицированной версии Проект Win32) с включенным свойством «Пустой проект» (Empty project). В проект добавлен файл с расширение .cpp, исходный код которого приведен в листинге ниже. В редакторе ресурсов создано диалоговое окно как ресурс, внешний вид диалогового окна представлен на рисунке 1. При создании ресурсов автоматически создаются файл resource.h и файл с расширение .rc, исходные тексты которых не приводятся. В этих файлах идентификатор диалогового окна – IDD_DIALOG1, идентификаторы текстовых полей – IDC_EDIT1, IDC_EDIT2, IDC_EDIT3, идентификаторы кнопок – IDC_BUTTON1, IDC_BUTTON2, IDC_BUTTON3, идентификатор списка – IDC_LIST1.
Листинг программы с комментариями:
#include <stdio.h>
#include <Windows.h>
#include "resource.h"
BOOL CALLBACK DialogFun(HWND hwnd, UINT message,
WPARAM wParam, LPARAM lParam)
{
char Text[64];
double x, y, z;
switch(message)
{
case WM_COMMAND:
switch(LOWORD(wParam))
{
case IDOK:
case IDCANCEL:
EndDialog(hwnd, LOWORD(wParam));
return TRUE;
case IDC_BUTTON1: // Обработка сообщения от кнопки +
case IDC_BUTTON2: // Обработка сообщения от кнопки -
SendDlgItemMessage(hwnd, IDC_EDIT1, WM_GETTEXT, 63, (LPARAM)Text); // Получить текст из текстового поля и записать в массив Text
if (sscanf_s(Text, "%lf", &x)<1)
{
MessageBox(hwnd, "Неверный формат первого операнда",
"Ошибка формата", MB_OK | MB_ICONHAND);
return TRUE;
}
SendDlgItemMessage(hwnd, IDC_EDIT2, WM_GETTEXT, 63, (LPARAM)Text); // Получить текст из текстового поля и записать в массив Text
if (sscanf_s(Text, "%lf", &y)<1)
{
MessageBox(hwnd, "Неверный формат второго операнда",
"Ошибка формата", MB_OK | MB_ICONHAND);
return TRUE;
}
char Znak;
if (LOWORD(wParam)==IDC_BUTTON1) { z=x+y; Znak='+'; }
if (LOWORD(wParam)==IDC_BUTTON2) { z=x-y; Znak='-'; }
sprintf(Text, "%f", z);
SendDlgItemMessage(hwnd, IDC_EDIT3, WM_SETTEXT, 0, (LPARAM)Text); // Помещаем текст из массива в текстовое поле
sprintf_s(Text, "%f %c %f = %f", x, Znak, y, z);
SendDlgItemMessage(hwnd, IDC_LIST1, LB_ADDSTRING, 0, (LPARAM)Text);
return TRUE;
case IDC_BUTTON3: // Обработка сообщения от кнопки "Очистить список"
SendDlgItemMessage(hwnd, IDC_LIST1, LB_RESETCONTENT, 0, 0);
return TRUE;
}
}
return FALSE;
}
int APIENTRY WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow)
{
// TODO: Place code here.
DialogBox(hInstance, MAKEINTRESOURCE(IDD_DIALOG1), 0, DialogFun);
return 0;
}
Следует отметить, что для запуска данной программы необходимо в окне свойств проекта отключить использование кодировки Unicode. Т.е. установить опцию «Набор символов» в состояние «Не задано», как показано на рисунке 2.

Рисунок 2 – Отключение набора символов Unicode
