Слайд 2Создание GUI-приложений
GUI-приложение – это такой тип приложения, которое создается и выполняется на
![Создание GUI-приложений GUI-приложение – это такой тип приложения, которое создается и выполняется на основе графического интерфейса.](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/383978/slide-1.jpg)
основе графического интерфейса.
Слайд 3Создание GUI-приложений
Категории сообщений
1. Сообщения-запросы (используются для изменения или получения значений свойств адресата);
2.
![Создание GUI-приложений Категории сообщений 1. Сообщения-запросы (используются для изменения или получения значений](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/383978/slide-2.jpg)
Сообщения-уведомления (используются для сообщения своих свойств).
Слайд 4Создание GUI-приложений
Каждому потоку, создавшему хотя бы одно окно, ОС выделяет свою очередь
![Создание GUI-приложений Каждому потоку, создавшему хотя бы одно окно, ОС выделяет свою](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/383978/slide-3.jpg)
сообщений, используя структуру THREADINFO.
Слайд 5Создание GUI-приложений
Структура THREADINFO содержит:
- указатель на очередь асинхронных сообщений;
- указатель на очередь
![Создание GUI-приложений Структура THREADINFO содержит: - указатель на очередь асинхронных сообщений; -](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/383978/slide-4.jpg)
синхронных сообщений;
- указатель на очередь виртуального ввода;
- указатель на очередь ответных сообщений;
- флаги пробуждения;
- переменные, отражающие локальное состояние ввода;
- переменная nExitCode.
Слайд 6Создание GUI-приложений
Посылка асинхронных сообщений:
BOOL PostMessage (
HWND hwnd, // дескриптор окна, которому
// посылается сообщение
UINT uMsg, // код
![Создание GUI-приложений Посылка асинхронных сообщений: BOOL PostMessage ( HWND hwnd, // дескриптор](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/383978/slide-5.jpg)
сообщения
WPARAM wParam, // параметры сообщения
LPARAM lParam); //параметры сообщения
Флаг пробуждения: QS_POSTMESSAGE
void PostQuitMessage (int nExitCode);
Флаг пробуждения: QS_QUIT
Слайд 7Создание GUI-приложений
Посылка синхронных сообщений:
LRESULT SendMessage (
HWND hwnd, // дескриптор окна, которому
// посылается сообщение
UINT uMsg, //
![Создание GUI-приложений Посылка синхронных сообщений: LRESULT SendMessage ( HWND hwnd, // дескриптор](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/383978/slide-6.jpg)
код сообщения
WPARAM wParam, // параметры сообщения
LPARAM lParam); //параметры сообщения
Флаг пробуждения: QS_SENDMESSAGE
Слайд 9Создание GUI-приложений
Режим функционирования окна
1. Приоритетное окно, foreground window (созданное потоком, с которым
![Создание GUI-приложений Режим функционирования окна 1. Приоритетное окно, foreground window (созданное потоком,](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/383978/slide-8.jpg)
в текущий момент времени работает пользователь);
2. Фоновое окно, background window (неприоритетное окно, например рабочий стол).
Слайд 10Создание GUI-приложений
Расположение окон относительно друг друга
1. Окно-владелец всегда находится ниже (под) окнами,
![Создание GUI-приложений Расположение окон относительно друг друга 1. Окно-владелец всегда находится ниже](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/383978/slide-9.jpg)
которыми владеет.
2. При уничтожении окна-владельца система автоматически уничтожает все окна, которыми владеет.
3. При сворачивании окна-владельца сворачиваются все окна, которыми он владеет.
Слайд 11Создание GUI-приложений
Области окна
1. Служебная область (область окна с заголовком, меню, рамками и
![Создание GUI-приложений Области окна 1. Служебная область (область окна с заголовком, меню,](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/383978/slide-10.jpg)
т.д.).
2. Клиентская область (область окна для вывода изображений).
Слайд 12Создание GUI-приложений
Типы окон
1. Перекрывающиеся окна (overlapped window);
2. Всплывающие окна (pop-up window);
3. Дочерние
![Создание GUI-приложений Типы окон 1. Перекрывающиеся окна (overlapped window); 2. Всплывающие окна](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/383978/slide-11.jpg)
окна (child window);
4. Слоистые окна (layered window);
5. Окна для сообщений (message-only window).
Слайд 13Создание GUI-приложений
Состояния окон
1. Скрытое окно
2. Свернутое окно
3. Развернутое окно
4. Активное окно
5. Заблокированное
![Создание GUI-приложений Состояния окон 1. Скрытое окно 2. Свернутое окно 3. Развернутое](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/383978/slide-12.jpg)
окно
Слайд 14Создание GUI-приложений
Алгоритм создания простого GUI-приложения
1. Описание функции WinMain(), которая содержит:
- описание класса
![Создание GUI-приложений Алгоритм создания простого GUI-приложения 1. Описание функции WinMain(), которая содержит:](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/383978/slide-13.jpg)
окна приложения;
- регистрацию описанного класса;
- создание главного окна приложения;
- отображение главного окна приложения;
- организацию цикла обработки сообщений для окна.
2. Описание оконной процедуры, которая содержит обработку получаемых сообщений.
Слайд 15Создание GUI-приложений
Точка входа в программу:
int WINAPI WinMain(
HINSTANCE hIns,
HINSTANCE hPrevIns,
LPSTR lpszCmpLine,
int nCmdShow);
![Создание GUI-приложений Точка входа в программу: int WINAPI WinMain( HINSTANCE hIns, HINSTANCE](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/383978/slide-14.jpg)