Вопрос № 107590: Доброго времени суток. Я новичек. Столкнулся с такой проблемой, если не сложно, то подскажите как исправить ситуацию. Создаю диалоговое MFC приложение в Visual Studio C++ .NET. Суть программы заключается в том, что есть Основное модальное диалоговое ...
Вопрос № 107.590
Доброго времени суток. Я новичек. Столкнулся с такой проблемой, если не сложно, то подскажите как исправить ситуацию. Создаю диалоговое MFC приложение в Visual Studio C++ .NET. Суть программы заключается в том, что есть Основное модальное диалоговое окно, в котором находятся 2 кнопки, 1-я кнопка осуществляет переход к модальному окну 1, а 2-я к модальному окну 2. Как сделать, чтобы во время перехода, т.е. после открытия 1-го модального окна, основное модальное окно стало скрытым, т.е. чтобы его не было видно
на экране, и потом при нажатии на кнопку назад в том же 1-м модальном окне, основное модальное окно появилось. И по аналогии тоже самое со 2-й кнопкой и 2-м модальным окном. Заранее спасибо.
Приложение:
Отправлен: 01.11.2007, 01:01
Вопрос задал: Isaev Den (статус: Посетитель)
Всего ответов: 3 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: Netizen
Здравствуйте, Isaev Den!
С модальными окнами не пробовал, но у формы есть свойство Visible может принимать значение true или false. То есть при нажатии на кн. 1 Form1->Visible = true;
Ответ отправил: Netizen (статус: Студент)
Ответ отправлен: 01.11.2007, 08:00 Оценка за ответ: 5 Комментарий оценки: Спасибо за совет. С формами все понятно. Буду пробовать.
Отвечает: Воробьёв Алексей Викторович
Здравствуйте, Isaev Den!
Так как у Вас сделано точно нельзя писать. Каждый раз, когда вы вызываете OnBtnClicked вы создаёте новое диалоговое окно, а не переключаетесь между двумя. В результате после 100 кликов у Вас будет 100 окон (101 точнее). Я не думаю, что именно это Вам надо.
Создавайте формы так, чтобы при нажатии на кнопку они возвращались в вызывающую программу.
Можете это сделать только для формы 2. Тогда код нажатия на клавишу переключения в форме 1 будет выглядеть как-то так:
Visible = false;
dlg2.DoModal();
Visible = true;
А в форме 2 будет просто возвращать значение из диалога (я не специалист в GUI потому не знаю как это сделать)
Или можно завести 2 формы в каком-то внешнем классе и сделать цикл типа
while(dlg1.DoModal() == SWITCH && dlg2.DoModal() == SWITCH)
{
}
где SWITCH - возвращаемое из диалога значение, что нажата кнопка переключения.
Ответ отправил: Воробьёв Алексей Викторович (статус: 5-ый класс)
Ответ отправлен: 01.11.2007, 10:27 Оценка за ответ: 5 Комментарий оценки: Большое спасибо. Обязательно учту этот нюанс. Буду пробовать, надеюсь все получится.
Отвечает: CruelHity
Здравствуйте, Isaev Den!
Воробьёв Алексей Викторович был прав лучше объявлят диологовое окно не при нажатии кнопки а в нутри класса!
А вот пример нажатии кнопки в приложении,Удачи!
Приложение:
Ответ отправил: CruelHity (статус: 3-ий класс)
Ответ отправлен: 01.11.2007, 13:24 Оценка за ответ: 5 Комментарий оценки: Большое спасибо за ответ. Буду пробовать, только попробую ShowWindow(SW_HIDE). Надеюсь все получится.