Уроки Iczelion'а




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


.elseif uMsg==WM_COMMAND

.if lParam==0 mov eax,wParam .if ax==IDM_CASCADE .....

.elseif ax==IDM_TILEVERT ..... .else invoke DefFrameProc, hwndFrame, hwndClient, uMsg,wParam, ret .endif

Обычно вам следует игнорировать сообщения о необрабатываемых событиях, но в случае с MDI, если вы просто проигнорируете их, то когда пользователь кликнет на имени дочернего MDI-окна, это окно не станет активным. Вам следует передавать управление DefFrameProc, чтобы они были правильно обработаны.

Я хочу предупредить вас относительно возможного значения idFirstChild: вам не следует использовать 0. Ваш список окон будет себя вести неправильно, то есть напротив пункта меню, обозначающего активное MDI-окно, не будет галочки. Лучше выберите какое-нибудь безопасное значение вроде 100 или выше.

Заполнив структуру CLIENTCREATESTRUCT, вы можете создать клиентское окно, вызвав CreateWindowEx, указав предопределенный класс "MDICLIENT" и передав адрес структуры CLIENTCREATESTRUCT через lParam. Вы должны также указать хэндл на фреймовое окно в параметре hWndParent, чтобы Windows знала об отношениях родитель-ребенок между фреймовым окно и клиентским окном. Вам следует использовать следующие стили окна: WS_CHILD, WS_VISIBLE и WS_CLIPCHILDREN. Если вы забудете указать стиль WS_VISIBLE, то не увидите дочерних MDI-окон, даже если они будут созданы успешно.

Этапы создания клиентского окна следующие:

  • Получить хэндл на подменю, к которому вы хотите присоединить список окон.
  • Поместите значение хэндла меню и значения, которое вы хотите использовать как ID первого дочернего MDI-окна в структуру CLIENCREATESTRUCT.
  • Вызовите CreateWindosEx, передав имя класса "MDICLIENT" и адрес структуры CLIENTCREATESTRUCT, которую вы только что заполнили, через lParam.
  • Создание дочернего MDI-окна.

    Теперь у вас есть и фреймовое и клиентское окно. Теперь все готово для создания дочернего MDI-окна. Есть два пути сделать это.

    • Вы можете послать сообщение WM_MDICREATE клиентскому окн, передав тому адрес структуры типа MDICREATESTRUCT через wParam. Это простейший и наиболее часто используемый способ создания дочерних MDI-окон.




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