Академический Документы
Профессиональный Документы
Культура Документы
ЛЕКЦИЯ 5
МЕТОДЫ КЛАССА CWND________________________________________________________________ 1
Функции класса окна CWnd _______________________________________________________________ 1
Получение заголовка окна _________________________________________________________________ 1
Установка заголовка окна _________________________________________________________________ 2
Получение длины заголовка _______________________________________________________________ 2
Изменение позиции, размеров окна и состояния окна _________________________________________ 2
Отображение окна ______________________________________________________________________ 3
Структура WINDOWPLACEMENT __________________________________________________________ 3
Получение информации о позиции, размере и стиле отображения окна __________________________ 4
Изменение позиции, размера и стиля отображения окна_______________________________________ 4
Изменение доступа к окну ________________________________________________________________ 4
Получение размеров окна. Функция GetWindowRect __________________________________________ 4
Получение размеров клиентской области окна. Функция GetClientRect ___________________________ 4
Перемещение окна _____________________________________________________________________ 5
Проверка и обмен данными ______________________________________________________________ 5
CObject
CCmdTaget
CWnd
Отображение окна
Изменить стиль отображения окна можно с помощью функции ShowWindow ( ), прототип которой
имеет вид:
BOOL ShowWindow ( int nCmdShow ) ;
Функция возвращает ненулевое значение, если окно было видимым. Если окно было невидимым – то
возвращает ноль. Параметр функции может принимать одно из следующих значений:
SW_HIDE скрывает окно и активизирует другое окно;
SW_SHOW активизирует окно и отображает его в текущей позиции с текущими разме-
рами, указанными в параметре rcNormalPosition;
SW_SHOWMINIMIZED активизирует окно и отображает его в виде значка;
SW_SHOWMAXIMIZED активизирует и разворачивает окно;
SW_SHOWNOACTIVATE отображает неактивное окно в его текущей позиции с текущими размерами,
указанными в параметре rcNormalPosition;
SW_MINIMIZE минимизирует окно и активизирует окно верхнего уровня;
SW_SHOWMINIMIZED отображает окно в виде значка. Активное окно остаётся активным;
SW_SHOWNA отображает окно в его текущем состоянии. Активное окно остаётся актив-
ным;
SW_RESTORE активизирует и восстанавливает окно;
SW_SHOWNORMAL активизирует и восстанавливает окно.
В следующем примере мы скрываем элемент управления IDC_DATA, с которым связана перемен-
ная-член класса m_data.
m_data.ShowWindow ( SW_HIDE ) ; // скрывает элемент управления IDC_DATA
Структура WINDOWPLACEMENT
Структура WINDOWPLACEMENT содержит информацию о позиции, размере и состоянии окна.
typedef struct tagWINDOWPLACEMENT
{
UINT length ; // длина структуры в байтах
UINT flags ; // управляет методом восстановления окна
UINT showCmd ; // определяет состояние окна
POINT ptMinPosition ; // определяет позицию минимизированного окна
POINT ptMaxPosition ; // определяет позицию развёрнутого окна
RECT rcNormalPosition ; // определяет позицию и размеры восстановленного окна
} WINDOWPLACEMENT ;
Поля структуры имеют следующее назначение:
showCmd определяет состояние окна. Этот параметр может принимать те же значения что и па-
раметр nCmdShow у функции ShowWindow ( );
flags определяет флажки, которые управляют позицией минимизированного окна и методом
восстановления окна. Этот член может содержать один или оба из следующих флажков:
WPF_SETMINPOSITION определяет, что окно будет свёрнуто в позицию с координатами,
указанными в члене структуры ptMinPosition;
WPF_RESTORETOMAXIMIZED если флаг установлен, то окно после свёртывания будет
развёрнуто, если флаг отсутствует, то окно после свёртывания будет
восстановлено.
Перемещение окна
Изменить положение и размеры окна можно с помощью двух перегруженных функций MoveWin-
dow ( ), прототипы которых имеет вид:
void MoveWindow ( int x , int y , int nWidth , int nHeight , BOOL bRepaint = TRUE ) ;
void MoveWindow ( LPCRECT lpRect , BOOL bRepaint = TRUE ) ;
x,y определяет новые координаты верхнего левого угла окна;
nWidth , nHeight определяет новые значения ширины и высоты окна;
lpRect указатель на прямоугольник, который определяет новое положение и размеры ок-
на;
bRepaint определяет, будет ли окно перерисовано. Если параметр равен TRUE, то роди-
тельское окно получает сообщение WM_PAINT;
Функция MoveWindow ( ) посылает родительскому окно сообщение WM_GETMINMAXINFO.