Запись процедуры рамочного окна


Оконная процедура рамочного окна MDI похожа на процедуру главного окна не-MDI приложения. Различие заключается в том, что процедура рамочного окна передает все сообщения, которые она не обрабатывает, в функцию DefFrameProc, а не в функцию DefWindowProc. Кроме того, процедура рамочного окна должна также передавать и некоторые сообщения, которые она  обрабатывает, включая внесенные в список в таблице ниже.

Сообщение Ответное действие
WM_COMMAND Активизирует дочернее окно MDI, которое выбирает пользователь. Это сообщение отправляется тогда, когда  пользователь выбирает дочернее окно MDI из  меню рамочного окна  MDI. Идентификатор окна, сопровождающий это сообщение идентифицирует дочернее окно MDI, которое становиться активным.
WM_MENUCHAR Открывает меню активного дочернего окна MDI, когда пользователь нажимает комбинацию клавиш ALT + - (минус).
WM_SETFOCUS Передает фокус клавиатуры в рабочее окно MDI, которое в свою очередь передает его в активное дочернее окно MDI.
WM_SIZE Изменяет размеры рабочего окна MDI, чтобы вместить его в рабочей области нового рамочного окна. Если процедура рамочного окна устанавливает размеры рабочего окна MDI другого размера, она не должна передавать это сообщение в функцию DefWindowProc.

Процедура рамочного окна в программе Multipad называется MPFrameWndProc. Обработка других сообщений функцией MPFrameWndProc похожа на обработку не-MDI приложения. Сообщения WM_COMMAND в Multipad обрабатываются при помощи локально определяемой функции CommandHandler. Поскольку Multipad не обрабатывает  командные сообщения, CommandHandler вызывает функцию DefFrameProc. Если Multipad не использует DefFrameProc по умолчанию, пользователь не может активизировать дочернее окно из меню окна, потому что сообщение WM_COMMAND, отправленное при помощи щелчка по пункту меню окна будет потеряно.

Назад в оглавление
На главную страницу

Hosted by uCoz