Ох уж эти Модальные окна
Пишу такое приложенийце:
1. Главная форма представляет собой что-то вроде главного окна Builder.
2. Из меню главного окна можно вызывать, так сказать вторичные окна (причем Parent их HWND_DESKTOP), которые расположены в DLL
3. Из вторичных окон в процессе работы юзверь может вызвать различные окошки, причем вызов модальный (ShowModal), т.к. нужно выбрать значение из Справочника.
4. Как обычно есть пункт меню, по которому можно вызвать окошко о программе fAbout (тоже ShowModal)
Проблема:
Открываем вторичное окно -> из него вызываем справочник (модальный вызов) -> Переходим в другое приложение (например, MS Word) -> возвращаемся обратно нашему приложению (путем нажатия кнопки на панели задач) ===> Результат видим только Главную форму, вторичное окно и модальное скрылись
Анализ:
1.Самое интересное в том. что при проведении такого же опыта с открытым модально окном fAbout все ок, вместе с главной формой появляется и модальное fAbout.
2. fAbout->Parent = fModalWin->Parent = NULL
3. fAbout->Owner = fModalWin->Owner = Главная форма
4. STYLE(fAbout) = STYLE(fModalWin)
5. EX_STYLE(fAbout) = EX_STYLE(fModalWin)
6. Вызов fAbout и fModalWin делаю в коде Главного окна (хотя изначально вызов fModalWin происходил в DLL)
Единственная на мой взгляд разница, то что окошко fModalWin описано и создается в DLL (а лишь затем вызывается в коде главной формы)
Вопрос:
Что заставляет два окна Главное и fAbout работать в "связке", т.е.
Главное->BringToFront и покажутся оба окна? Почему при подобных параметрах такого не происходит в случает окна fModalWin?
Заранее Спасибо!
Могу посоветовать перехватывать событие Application->OnActivate, и в нём производить перерисовку окон программы "ручками".