MDI интерфейс

Тема в разделе "WASM.WIN32", создана пользователем Evg666, 30 мар 2006.

  1. Evg666

    Evg666 New Member

    Публикаций:
    0
    Регистрация:
    12 май 2004
    Сообщения:
    17
    Адрес:
    Russia
    Как в многооконном интерфейсе (MDI) при создании нового окна взять его содержимое из ресурса(диалог),

    при стандартном вызове DialogBoxParam диалог не принадлежит MDI окнам?

    Вообще можно ли построить окно по диалогу из ресурса

    не через множественные вызовы CreteWindow?
     
  2. Quantum

    Quantum Паладин дзена

    Публикаций:
    0
    Регистрация:
    6 янв 2003
    Сообщения:
    3.143
    Адрес:
    Ukraine
    CreateDialogParam умеет создавать немодальное окно по шаблону из ресурсов. Такое окно вполне годится для MDI.
     
  3. Evg666

    Evg666 New Member

    Публикаций:
    0
    Регистрация:
    12 май 2004
    Сообщения:
    17
    Адрес:
    Russia
    Quantum Да, но он не принадлежит клиентской области MDI, не показывается в списке окон и в результате его можно выдвинуть за пределы окна и при MAXIMIZE оно разворачивается на весь экран а не по клиентской области.

    Как его привязать к MDI через сообщение WM_MDICREATE? Если да то как?
     
  4. Quantum

    Quantum Паладин дзена

    Публикаций:
    0
    Регистрация:
    6 янв 2003
    Сообщения:
    3.143
    Адрес:
    Ukraine
    Evg666



    Надо сделать так, чтоб принадлежало. Для этого достаточно сделать это окно дочерним по отношению к MDI.



    CreateDialogParam(hInst, шаблон, hwnd MDI окна, ...



    В шаблоне обязательно указать стиль WS_CHILD!
     
  5. Evg666

    Evg666 New Member

    Публикаций:
    0
    Регистрация:
    12 май 2004
    Сообщения:
    17
    Адрес:
    Russia
    Quantum Делаю так

    CreateDialogParam(hInst,DIALOG1,hwndMDIClient,..)

    У DIALOG1`а стоит WS_CHILD.

    В списке окон в меню которые он создает сам диалог не появился.Заголовок теперь никогда не становится активным(все время серый) за MDIClient область диалог не вылазиет на весь экран разворач. глюкаво. Может надо стиль WS_EX_MDICHILD, но я его не могу поставить в VS.Net его нет.
     
  6. Evg666

    Evg666 New Member

    Публикаций:
    0
    Регистрация:
    12 май 2004
    Сообщения:
    17
    Адрес:
    Russia
    Получилось то что надо вот так.

    CreateDialogParam(hInst,DIALOG1,SendMessage(hwndMDIClient,WM_MDICREATE ,...),....) только нужно убирать заголовок окна. МДа в окне диалог может есть более изящный сособ без лишнего окна?