Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Ох уж эти Модальные окна

16K
10 апреля 2007 года
tomat
9 / / 06.08.2006
Добрый День! Дорогие друзья, помогите, пожалуйста, разобраться с такой проблемой:
Пишу такое приложенийце:
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?

Заранее Спасибо!
309
11 апреля 2007 года
el scorpio
1.1K / / 19.09.2006
Могу посоветовать перехватывать событие Application->OnActivate, и в нём производить перерисовку окон программы "ручками".
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог