Уроки Iczelion'а




Урок 32. Создание MDI-приложения - часть 7


  • WM_MDIMAXIMIZE, WM_MDIRESTORE - используйте WM_MDIMAXIZE для разворачивания дочернего MDI-окна и WM_MDIRESTORE для его восстановления. Всегда используйте эти сообщения для данных операций. Если вы используете ShowWindow с SW_MAXIMIZE, дочернее MDI-окно будет развернуто, но у вас появятся проблемы, когда вы захотите восстановить его до прежнего размера. Вы можете минимизировать окно с помощью ShowWindow без всяких проблем.
  • WM_MDINEXT - посылайте это сообщение клиентскому окну, чтобы активировать следующее или предыдущее дочернее MDI-окно, согласно значению wParam и lParam.
  • WM_MDIREFRESHMENU - это сообщение посылается клиентскому окну, чтобы обновить меню фреймового окна. Обратите внимание, что вы должны вызвать DrawMenuBar для обновления меню баp после отсылки данного сообщения.
  • WM_MDISETMENU - посылайте это сообщение клиентскому окну, что полностью заменить меню фреймового окна или только подменю окон. Вы должны использовать данное сообщение вместо SetMenu. После того, как вы отослали данное сообщение, вы должны вызвать DrawMenuBar. Обычно вы будете использовать это сообщение, когда у активного дочернего MDI-окна есть свое меню и вы хотите, чтобы оно заменяло меню фреймового окна, пока это дочернее MDI-окно активно.
  • Я сделаю небольшое обозрение создания MDI-приложения еще раз:

    • Регистрируем классы окна, фреймового класса и дочернего MDI-окна.
    • Создаем фреймовое окно с помощью CreateWindowEx.
    • Внутри цикла обработки сообщений вызываем TranslateMDISysAccel, чтобы обработать "горячие клавиши", относящиеся к MDI.
    • Внутри оконной процедуры фреймового окна вызываем DefFramProc, чтобы обрабатывать все сообщения, необрабатываемые приложением.
    • Создаем клиентское окно, вызвав CreateWindowEx, которой передаем имя предопределенного класса окна, "MDICLIENT", передавая адрес структуры CLIENTCREATESTRUCT через lParam. Обычно вы будете создавать клиентское окно внутри обработчика сообщения WM_CREATE фреймового окна.
    • Вы можете создать дочернее MDI-окно, послав клиентскому окну сообщение WM_MDICREATE или вызвав функцию CreateMDIWindow.



    • Содержание  Назад  Вперед