Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
3 семестр, WinAPI, MFC.pdf
Скачиваний:
388
Добавлен:
15.06.2014
Размер:
6.17 Mб
Скачать

Попутно упомянем две функции, которые позволяют узнать текущие обычный и расширенный стили окна:

DWORD CWnd::GetStyle()

и

DWORD CWnd::GetExStyle()

Ограничение размеров окна

Мы создали главное окно приложения Styles таким образом, что пользователь не может изменить его размеры. Более того, окно не изменит своих размеров даже тогда, когда вы попытаетесь максимизировать его. Такое поведение окна достигается введением соответствующей обработки сообщения Windows WM GETMINMAXINFO, которая выполняется обработчиком:

void CMainFrame::OnGetMinMaxInfо(MINMAXINFO FAR* IpMMI) { int ex = ::GetSystemMetrics(SM_CXSCREEN)/8;

int cy = ::GetSystemMetrics(SM_CYSCREEN)/4;

lpMMl->ptMinTrackSize.x = 6'cx; ip.MMI->ptMinTrackSize. у = 2«cy; IpMMI->ptMaxTrackSize.x = 6*cx; lpMMI- >ptMaxTrackSize.y = 2*cy; lpMMI->ptMaxPosition.x = ex; lpMMI->ptMaxPosition.у = су;

CFrameWnd::OnGetMinMaxInfо(IpMMI); I

Обработчику в качестве параметра передается указатель на структуру типа MINMAXINFO, которая содержит информацию о максимально возможных размерах и позиции окна, а также о минимальных и максимальных изменяемых размерах:

typedef struct tagMINMAXINFO { POINT ptReserved;

POINT ptMaxSize; POINT ptMaxPosition; POINT ptMinTrackSize;

POINT ptMaxTrackSize; } MINMAXINFO;

Поля этой структуры имеют следующее назначение: ptReserved — зарезервировано для внутреннего использования; ptMaxSize — устанавливает размеры окна, которые оно может иметь в развернутом виде; ptMaxPosition — устанавливает значение, которое должен иметь левый верхний угол развернутого окна; ptMinTrackSize — устанавливает минимальные размеры, до которых пользователь может сжать границы окна; ptMaxTrackSize — устанавливает максимальные размеры, до которых пользователь может растянуть границы окна.

Как видите все очень просто. Последнее, что нам осталось рассмотреть — каким образом можно получить информацию о системных параметрах.

Функция GetSystemMetrics

Эта функция позволяет получить размеры (высоту и ширину) изображаемых элементов Windows, а также другую информацию. Все размеры даются в пикселях:

int GetSystemMetrics(int nlndex)

Значение nlndex определяет параметр, который вы хотите получить (возвращаемые функцией значения могут изменяться в зависимости от типа используемого дисплея и установок пользователя). Приведем небольшой список наиболее часто используемых параметров

Ограничение доступа к окну

Большинство из стилей окна, использованных в приложении Styles, достаточно ясны. Поэтому мы остановимся только на одном из них — WS_DISABLED. Окна, имеющие такой стиль, абсолютно неподвижны, и ими нельзя манипулировать ни с помощью мыши, ни с помощью клавиатуры. Обратите также внимание, что у такого окна и курсор не соответствует заданному в оконном классе. Для доступа к этому свойству окон в классе CWnd реализована специальная функция