- •Лабораторная работа №1 Структура приложения под Windows
- •Получить координаты окна (прямоугольник) GetWindowRect
- •Установить координаты окна SetWindowPos
- •Переместить окно MoveWindow
- •Int X, // позиция по горизонтали
- •Int y, // позиция по вертикали
- •Вывод сообщения Message Box
- •Создать окно CreateWindow
- •Установка идентификатора: SetWindowLong
- •Функции GetWindowText и SetWindowText
- •Функции SetParent и GetParent
- •Функция Sleep (пауза)
- •Функции для работы с регионами
- •Описание событий мыши с параметрами, а также событий
Установка идентификатора: SetWindowLong
Функция SetWindowLong изменяет атрибуты определяемого окна. Функция также устанавливает 32-разрядное (длинное) значение при заданном смещении в дополнительном пространстве памяти об окне.
Синтаксис
LONG SetWindowLong
(
HWND hWnd, // дескриптор окна
int nIndex, // значение смещения, которое устанавливается
LONG dwNewLong //новое значение
);
Функции GetWindowText и SetWindowText
Функция SetWindowText изменяет текст строки заголовка заданного окна (если таковая имеется). Если определяемое окно - элемент управления, то его текст изменяется.
Синтаксис
BOOL SetWindowText
(
HWND hWnd, // дескриптор окна или элемента управления
LPCTSTR lpString // адрес строчки
);
Функция GetWindowText копирует текст строки заголовка определяемого окна (если оно имеет ее) в буфер. Если определяемое окно - элемент управления, текст элемента управления копируется.
Синтаксис
int GetWindowText
(
HWND hWnd, // дескриптор окна или элемента управления с текстом
LPTSTR lpString, // адрес буфера для текста
int nMaxCount // максимальное число символов для копирования
);
Функции SetParent и GetParent
Функция SetParent заменяет родительское окно заданного дочернего окна.
Синтаксис
HWND SetParent
(
HWND hWndChild, // Дескриптор окна, родитель которого изменяется
HWND hWndNewParent // Дескриптор нового родительского окна
);
Функция GetParent находит дескриптор родительского окна заданного дочернего окна.
Синтаксис
HWND GetParent
(
HWND hWnd // дескриптор дочернего окна
);
Функция Sleep (пауза)
VOID WINAPI Sleep(
_In_ DWORD dwMilliseconds
);
Функции для работы с регионами
Формы, окна все они прямоугольные. Единственный способ бороться с этим - это применять регионы. Использование регионов позволит создавать окна любой формы.
Регион в Windows - это замкнутая фигура, обычно для региона применяют английское слово RGN. В MFC есть соотвествующий класс CRgn. Как всегда этот класс соответствует чему-то в Windows. В Windows же есть понятие HRGN, то есть указатель на регион.
У каждого приложения есть регион, который можно представить как область, за пределами которой окна не существует. То есть оно может быть, но пока есть регион он обрезает все, что выходит за его область. Любой класс порожденный от CWnd имеет регион. Для работы с регионами в этом классе предусмотрены две функции.
int SetWindowRgn( HRGN hRgn, BOOL bRedraw ); // установить регион
int GetWindowRgn( HRGN hRgn )const; // получить регион
Для того, чтобы использовать регион его нужно создать, регионы могут быть разной формы и создаются они по разному.
BOOL CreateRectRgn( int x1, int y1, int x2, int y2 );
// прямоугольные регион
BOOL CreateRectRgnIndirect( LPCRECT lpRect );
// тоже самое только входящие данные структура CRect
BOOL CreateEllipticRgn( int x1, int y1, int x2, int y2 );
// элипсоидный регион
BOOL CreateEllipticRgnIndirect( LPCRECT lpRect );
// тоже самое только входящие данные структура CRect
BOOL CreatePolygonRgn( LPPOINT lpPoints, int nCount, int nMode );
// регион из массива точек
BOOL CreatePolyPolygonRgn( LPPOINT lpPoints, LPINT lpPolyCounts, int nCount, int nPolyFillMode );
// регион из набора регионов
BOOL CreateRoundRectRgn( int x1, int y1, int x2, int y2, int x3, int y3 );
// регион с закруглеными краями
Но на этом все не заканчивается, регионы можно комбинировать и получать более новые и сложные фигуры.
int CombineRgn( CRgn* pRgn1, CRgn* pRgn2, int nCombineMode );
// комбинирование регионов.
