![]() |
|
![]() ![]() ![]() |
|
mrgloom |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 829 Регистрация: 8.6.2011 Репутация: нет Всего: нет |
Есть главное окно, потом открывается еще 1 окно в котором есть кнопка свёртывания, проставленная в свойствах Minimize Box.
вызывается как
только при нажатии кнопки сворачивания почему то сворачивается вся программа, а хотелось бы чтобы сворачивался только открытый диалог. |
|||
|
||||
Albor |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 589 Регистрация: 28.2.2009 Репутация: 7 Всего: 9 |
Зачем сворачивать модальный диалог? Всё равно, пока он не закрыт, с основным окном ни чего не сделать. Используйте не модальный режим.
|
|||
|
||||
akizelokro |
|
|||
![]() Крокодил ![]() ![]() Профиль Группа: Участник Сообщений: 761 Регистрация: 30.7.2007 Репутация: нет Всего: 5 |
Оба утверждения спорны.
Если запустить такую кострукцию как
а с модального окна убрать все элементы управления, кнопки, по которому оно закрывается и перекрыть закрытие модального окна по Escape, то сделать всё-таки что-то можно. Поведение программы в такой ситуации различается в XP и Windows7, но обработку поток делает спокойно. Единственное, что модальное окно, если на него повесить прогрессбар, в XP не будет отображать прогресс (Возможно, можно сделать это неким другим потоком). Но,предположу, чтов другие окна даже под XP Добраться можно из запущенного потока. Как сделать,чтобы основное окно не минимизировалось? Есдинственное, что могу предположить, - не отрисовывать для модального окна ничего на панели задач, а попутно, для пущей уверенности и в главном окне пробовать запретить (перехватить) минимизацию. Но это всё весёлые изыски.. потому я сеодня два хороших куса кода ночью забубенил. А потом ещё и PHP-скрипт начал писать на языке JavaScript и долго удивлялся, почему оно там не работает. ![]() Это сообщение отредактировал(а) akizelokro - 4.9.2013, 15:46 -------------------- a = a + b; b = a - b; a = a - b; |
|||
|
||||
Albor |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 589 Регистрация: 28.2.2009 Репутация: 7 Всего: 9 |
Оспорить можно что угодно. Модальный диалог нужен для обязательного общения с пользователем. Так зачем же давать возможность этому пользователю себя сворачивать и давать доступ к основному окну без получения нужной реакции/информации для основной задачи? |
|||
|
||||
akizelokro |
|
|||
![]() Крокодил ![]() ![]() Профиль Группа: Участник Сообщений: 761 Регистрация: 30.7.2007 Репутация: нет Всего: 5 |
С этим вот как раз согласен.
А попробовать тоже, возможно, стоит. Просто для ознакомления с "начинкой". Это сообщение отредактировал(а) akizelokro - 4.9.2013, 20:14 -------------------- a = a + b; b = a - b; a = a - b; |
|||
|
||||
mrgloom |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 829 Регистрация: 8.6.2011 Репутация: нет Всего: нет |
попробовал не модальный диалог создать так.
работает нормально и минимизация тоже, только почему то при повторном запуске падает. |
|||
|
||||
akizelokro |
|
|||
![]() Крокодил ![]() ![]() Профиль Группа: Участник Сообщений: 761 Регистрация: 30.7.2007 Репутация: нет Всего: 5 |
Тебе написали в другой теме почему, это уже не проблема API. Ты пытаешься создать static-объект второй раз.
А не позволяет тебе это делать сам язык программирования. Во второй раз не создавай его, а вызывай уже созданный до этого (тут надо обсмотреть ещё, что ты не "чикаешь" сам диалог при закрытии в первый раз до такой степени, что его уже не вызвать повторно, возможно ли такое, - надо смотреть и разбираться). Со static-диалогом работай лучше по-другому. Создавай при старте программы, когда тебе нужно его вызвать, делай активным (показывай), при закрытии (кнопка "ок", "отмена, Alt+F4 - убирай с глаз долой. Добавлено @ 13:38 Да и вообще посмотри создание немодальных диалоговых окон. Это сообщение отредактировал(а) akizelokro - 5.9.2013, 13:38 -------------------- a = a + b; b = a - b; a = a - b; |
|||
|
||||
mrgloom |
|
||||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 829 Регистрация: 8.6.2011 Репутация: нет Всего: нет |
так ошибка происходит не когда подходит к определению static объекта второй раз, а на Create. я не понимаю что происходит там более подробно.
я просто закрываю диалог на Ok или Cancel и потом пытаюсь вызвать еще раз. смысл варианта с singleton(если он будет работать), что в главном диалоге не надо определять переменную для дочернего диалога. Это сообщение отредактировал(а) mrgloom - 5.9.2013, 15:41 |
||||
|
|||||
akizelokro |
|
|||
![]() Крокодил ![]() ![]() Профиль Группа: Участник Сообщений: 761 Регистрация: 30.7.2007 Репутация: нет Всего: 5 |
Тебе же написали, что это синглетон. поверим добрым людям, что его больше одного раза в программе создавать нельзя. А ты пытаешься его создавать ещё в CMain::OnSomeButtonPress(). вызови Create в другом месте программы, гед, например идёт инициализация и этот кусок кода вызвается всего один раз. Притом, создай его с Visible = false. В CMain::OnSomeButtonPress() просто пиши Visisbie=true, а в обработчикахнажатия кнопок Ок и Отмена пиши снова Visible=false. -------------------- a = a + b; b = a - b; a = a - b; |
|||
|
||||
mrgloom |
|
||||||||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 829 Регистрация: 8.6.2011 Репутация: нет Всего: нет |
Всё таки дело в Create
такой код тоже падает.
вообще сделал так
|
||||||||
|
|||||||||
mrgloom |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 829 Регистрация: 8.6.2011 Репутация: нет Всего: нет |
создаю так диалог, но как то получается так что окна которые были созданы до остаются доступными, т.е. можно на них перейти и например закрыть, а надо чтобы было доступен только текущий диалог. В чем может быть причина? может быть в моём случае какие то проблемы с выставленными стилями окна? |
|||
|
||||
mrgloom |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 829 Регистрация: 8.6.2011 Репутация: нет Всего: нет |
похоже проблема в том, что до открытия основного диалога я вызываю еще 1 модальный диалог в CMyDlg::OnInitDialog() и после открытия мой диалог почему то теряет модальность, если же открытие побочного диалога закомментить, то всё норм.
|
|||
|
||||
mrgloom |
|
||||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 829 Регистрация: 8.6.2011 Репутация: нет Всего: нет |
было
вообщем проблема решилась надо было так.
Это сообщение отредактировал(а) mrgloom - 19.9.2013, 09:24 |
||||
|
|||||
![]() ![]() ![]() |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Visual C++/MFC/WTL | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |