Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Базовая концепция графического интерфейса в Win32API. Окна, оконные классы, события и сообщения. Обработка сообщений. Основные типы данных в Win32API.






 

Win32API — совокупность библиотек, которые связывают Windows и прикладные программы.

 

#include < windows.h>

 

• Управление процессами и потоками

• Работа с файловой системой

• Средства программирования работы по сети

• Взаимодействие программ, в т.ч. по сети

• Средства графического интерфейса Windows

 

В WinAPI есть абстракции оконных и вспомогательных объектов.

Окна: независимые элементы управления.

 

Доступ ко всем объектам осуществляется при помощи дескрипторов объектов.

 

Вспомогательные объекты: курсоры, кисти, перья, значки.

 

Окна могут принимать и реагировать на сообщения, которые генерируются программно или возникают при различных событиях.

 

Событие — действие пользователя или системы.

 

ОС выстраивает очередь сообщений для каждого окна стандартного класса. Пользовательским классам требуется прописывать циклы обработки. Это делается функцией оконной процедуры. Один из параметров функции — дескриптор окна, который определяет, для какого окна будут обрабатываться сообщения.

 

Типы данных:

тип соотв. c++

BOOL bool

BYTE unsigned char

WORD unsigned short

DWORD unsigned int

UINT unsigned int

INT int

LONG long

LPSTR char*

LPCSTR char* (const)

NULL пустой указатель

 

Дескрипторы:

 

тип описание

HANDLE указатель на любой объект

HWND дескриптор окна

HMENU дескриптор меню

HINSTANCE дескриптор приложения

HBITMAP изображение (растровое)

HBRUSH дескриптор кисти

HPEN дескриптор пера

HDC дескриптор контекста устройства

HFONT дескриптор шрифта

HICON дескриптор значка

HCURSOR дескриптор курсора

 

Структура оконного класса в Win32API. Регистрация оконного класса. Стандартные классы органов управления в Win32API.

 

Структура оконного класса:

WNDCLASS/WNDCLASSEX

UINT style; //флаги стиля по умолч.

WNDPROC lpfnWndProc; //указ. на окон. процедуру

int cbWndExtra, cbClsExtra; //кол-во данных окна и класса

HINSTANCE hInstance;

HICON hIcon;

HCURSOR hCursor;

HBRUSH hBackground;

LPCSTR lpszMenuName;

 

Регистрация оконного класса:

RegisterClass(WNDCLASS*lpWndClass);

RegisterClassEx(WNDCLASSEX*lpWndClass);

 

Стандартные элементы управления:

• Button

• Edit

• ListBox

• ComboBox

• Static

• RichEdit

 

Функции создания окна в Win32API. Структура сообщения в Win32API. Цикл сообщений. Функции, используемые в цикле сообщений. Стандартный прототип функции обработки сообщений в Win32API.

 

Для создания окна вызывают функцию CreateWindow. Она создает перекрывающееся, временное или дочернее окно и устанавливает начальное значение некоторых его параметров. Эта функция объявляется следующим образом:

HWND CreateWindow(

LPCTSTR lpClassName, Указатель на имя класса

LPCTSTR lpWindowName, Указатель на имя окна

DWORD dwStyle, Стиль окна

int x, Координата левого края окна

int y, Координата верхнего края окна

int nWidth, Ширина окна

int nHidht, Высота окна

HWND hWndParent, Дескриптор родительского окна

HMENU hMenu, Дескриптор меню или идентификатор дочернего окна

HANDLE hInstance, Дескриптор приложения

LPVOID lParam Указатель на данные окна

);

 

Перед созданием окна функция CreateWindow посылает код сообщения WM_CREATE функции создаваемого окна. Она затем обрабатывает возвращаемое функцией окна значение и создает окно, если это значение равно 0, или не создает окна, если значение ровно -1. Соответственно функция CreateWindow возвращает дескриптор созданного окна или NULL.

 

Структура сообщения:

MSG:

HWND hWnd

UINT message

WPARAM wParam

LPARAM lParam

DWORD time

POINT pt

 

Цикл сообщений:

MSG msg;
while (GetMessage(& msg, (HWND)NULL, 0, 0)) {
TranslateMessage(& msg);
DispatchMessage(& msg);
}

 

Прототип функции обработки сообщений:

LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);

 






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.