|
|
Win32 API. Окна Страница 29. Создание, перечисление и изменение размеров дочерних окон
|
|
Страница 29 из 30 Создание, перечисление и изменение размеров дочерних оконВы можете поделить рабочую область окна на функционально-различные области, используя дочерние окна. Для создания дочернего окна, подобно созданию основного окна, Вы используете функцию CreateWindowEx. Чтобы создать окно определенного прикладной программой класса окна, Вы должны зарегистрировать класс окна и предоставить оконную процедуру перед созданием дочернего окна. Вы должны дать дочернему окну стиль WS_CHILD и определить родительское окно для дочернего окна, когда его создаете. Следующий пример делит рабочую область основного окна прикладной программы на три функциональные области, создавая три дочерних окна равного размера. Каждое дочернее окно имеет ту же самую высоту, что и рабочая область основного окна, однако каждое - третья часть его ширины. Основное окно создает дочерние окна в ответ на сообщение WM_CREATE, которое основное окно принимает в ходе своего собственного процесса создания. Поскольку каждое дочернее окно имеет стиль WS_BORDER, каждое из них имеет тонкую линию рамки. А также, по-скольку стиль WS_VISIBLE не определен, каждое дочернее окно первоначально скрыто. Обратите внимание также на то, что каждому дочернему окну назначен идентификатор дочернего окна. Основное окно устанавливает величину и позицию дочерних окон в ответ на сообщение WM_SIZE, которое основное окно принимает, когда изменяются его размеры. В ответ на WM_SIZE, основное окно восстанавливает габариты своей рабочей области, используя функцию GetWindowRect, а затем передает габариты в функцию EnumChildWindows. В свою очередь, EnumChildWindows передает дескриптор каждого дочернего окна в определенную прикладной программой функцию повторного вызова EnumChildProc. Эта функция устанавливает размеры и позицию каждого дочернего окна, через вызов функции MoveWindow; размер и позиция основываются на габаритах рабочей области основного окна и на идентификаторе дочернего окна. Позже, EnumChildProc вызывает функцию ShowWindow, чтобы сделать окно видимым. #define ID_FIRSTCHILD 100 #define ID_SECONDCHILD 101 #define ID_THIRDCHILD 102
LONG APIENTRY MainWndProc(hwnd, uMsg, wParam, lParam) HWND hwnd; UINT uMsg; UINT wParam; LONG lParam; { RECT rcClient; int i; switch(uMsg) { case WM_CREATE: // создание основного окна // Создание трех невидимых дочерних окна for (i = 0; i < 3; i++) CreateWindowEx(0,"ChildWClass",(LPCTSTR) NULL,WS_CHILD | WS_BORDER, 0,0,0,0,hwnd,(HMENU) (int) (ID_FIRSTCHILD + i),hinst,NULL); return 0; case WM_SIZE: // изменение размеров основного окна // Получает габариты рабочей области главного окна и перечисляет дочерние окна. // Передает габариты в дочерние окна в ходе перечисления. GetClientRect(hwnd, &rcClient); EnumChildWindows(hwnd, EnumChildProc,(LPARAM) &rcClient); return 0;
// Создание других сообщений. } return DefWindowProc(hwnd, uMsg, wParam, lParam); }
BOOL CALLBACK EnumChildProc(hwndChild, lParam) HWND hwndChild; LPARAM lParam; { LPRECT rcParent; int i, idChild; // Восстановление идентификатора дочернего окна. // Использовать его для установки дочернего окна. idChild = GetWindowLong(hwndChild, GWL_ID); if (idChild == ID_FIRSTCHILD) i = 0; else if (idChild == ID_SECONDCHILD) i = 1; else i = 2; // Размер и позиция дочернего окна. rcParent = (LPRECT) lParam; MoveWindow(hwndChild, (rcParent->right / 3) * i,0, rcParent->right / 3,rcParent->bottom,TRUE); // Удостоверитесь, что дочернее окно видимо ShowWindow(hwndChild, SW_SHOW); return TRUE; }
|
|
-
Win32,
Win32 API. Быстрые клавиши
В Microsoft Windows, ускоритель клавиатуры (keyboard accelerator) (или, просто, акселератор) - это нажатие клавиши или комбинация нажатий клавиш, которые генерирует для прикладной программы сообщение WM_COMMAND или WM_SYSCOMMAND....
-
Win32,
Win32 API. Пиктограммы
Пиктограмма (icon) – это рисунок, который состоит из растрового изображения, объединенного с маской, которая создает прозрачные области на рисунке. Этот краткий обзор описывает создание, показ на экране, разрушение и дублирование пиктограмм. Windows использует пиктограммы повсюду в интерфейсе пользователя, чтобы представить объекты, такие как файлы, папки, ярлыки, прикладные программы и документы. Функции пиктограммы в Microsoft Win32...
-
Win32,
Win32 API. Структуры и сообщения окна
Нижеперечисленные структуры и сообщения используются для создания и управления окнами. ...
-
Win32,
Win32 API. Функции окна
Следующие функции используются для создания и управления окнами. ...
-
Win32,
Win32 API. Меню
Меню (menu) состоит из перечня пунктов меню (menu items). Выбор пункта меню открывает подменю или принуждает прикладную программу выполнить команду. Этот краткий обзор описывает меню и объясняет, как использовать их в прикладных программах, разработанных при помощи Microsoft Win32 прикладного программного интерфейса (API)....
-
Win32,
Win32 API. Курсоры
Windows предоставляет набор стандартных курсоров, которые являются доступными для любой прикладной программы, чтобы использовать в любое время. Заголовочные файлы Windows содержат идентификаторы для стандартных курсоров - идентификаторы начинаются с префикса "IDC_". Каждый стандартный курсор имеет соответствующее заданное по умолчанию изображение, связанное с ним. Пользователь или прикладная программа могут заменять заданное по умолча...
-
Win32,
Win32 API. Функции и сообщения ввода информации с клавиатуры
Следующие функции используются, чтобы принимать и обрабатывать ввод информации с клавиатуры....
-
Win32,
Win32 API. Работа с клавиатурой
Этот беглый обзор рассматривает, как Windows создает вводимую информацию с клавиатуры и как прикладная программа принимает и обрабатывает эту вводимую информацию....
|
|
|