Минимизация и восст окон
Из родительского окна создаю модальное окно. Очень хочу сделать так, чтобы при минимизации его родительское тоже минимизировалось, а потом при щелчке по панели оба восстанавливались. Делаю следующее: на эвенте дочернего окна Minimize написал следующее (выкрутился):
PostMessage(Parent->GetHandle(),WS_MINIMIZE,0,0)
Все ОК, оба окна свернулись. Но вот как из потом обратно восстановить? Свернутая фигня ни на что больше не реагирует :(
Проблема в получении инфо о дочернем окне. У меня не MDI интерфейс, дочернее окно - обычное, только модальное (не дает переходить в родительское пока не закроешь). Как узнать, кому посылать ShowWindow (если оно для этого подойдет)???
Вдобавок, программа не реагирует после сворачивания ни на что, и метод Show не ловится. Что-то неправильно, однозначно. Может быть, так вообще делать нельзя???
Может, стоило бы попробовать в момент сворачивания выйти из модальной формы, а при восстановлении снова форму показать. Но это издевательство над здравым смыслом. Для того, собственно, модальная форма и предназначена, чтобы быстро сделать неотложное дело и вернуться к нормальной работе приложения.
Цитата:
Originally posted by fellow
У Вас получается вот что: дочерняя форма модальная, из неё родительская форма (она же - главная в приложении, как я подозреваю) сворачивается на панель задач. НО! Родительская форма не может ничего делать - фокус не в ней, она неактивна. Поэтому она ни на что и не реагирует.
У Вас получается вот что: дочерняя форма модальная, из неё родительская форма (она же - главная в приложении, как я подозреваю) сворачивается на панель задач. НО! Родительская форма не может ничего делать - фокус не в ней, она неактивна. Поэтому она ни на что и не реагирует.
Похоже на правду. Наверное, так и есть.
Цитата:
Originally posted by fellow
Может, стоило бы попробовать в момент сворачивания выйти из модальной формы, а при восстановлении снова форму показать. Но это издевательство над здравым смыслом. Для того, собственно, модальная форма и предназначена, чтобы быстро сделать неотложное дело и вернуться к нормальной работе приложения.
Может, стоило бы попробовать в момент сворачивания выйти из модальной формы, а при восстановлении снова форму показать. Но это издевательство над здравым смыслом. Для того, собственно, модальная форма и предназначена, чтобы быстро сделать неотложное дело и вернуться к нормальной работе приложения.
Но как быть, если нужно что-то другое в это время сделать, чтобы десктоп был открыт? Немодальной я сделать ее не могу, поскольку начнут тыкать на главной форме куда не надо.
Цитата:
Originally posted by mustlive
Но как быть, если нужно что-то другое в это время сделать, чтобы десктоп был открыт? Немодальной я сделать ее не могу, поскольку начнут тыкать на главной форме куда не надо.
Но как быть, если нужно что-то другое в это время сделать, чтобы десктоп был открыт? Немодальной я сделать ее не могу, поскольку начнут тыкать на главной форме куда не надо.
Может быть, скрыть главную форму?
Цитата:
Originally posted by fellow
Может быть, скрыть главную форму?
Может быть, скрыть главную форму?
Мысли сходятся :)
Я залез сюда, чтобы поделиться своим "открытием" - вместо минимизации использую Hide. Но ты меня опередил :) Правда, по человечески не удалось поймать событие восстановления дочернего окна, пришлось сделать через Resize (через oldPosition). Главное, не забыть засунуть Show в закрытие дочернего окна, а то юзеры удивятся :)