![]() |
|
Модераторы: feodorv, GremlinProg, xvr, Fixin |
![]()
|
|
| Alca |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3993 Регистрация: 14.6.2006 Репутация: 5 Всего: 50 |
VC++ 2008.
Создаю два окна с помощью ::CreateWindowEx(), 2-е окно является дочерним. Надо сделать второе окно модальным (не используя диалоги). Вот как это делается в билдере:
Как это все наваять на чистом апи? |
|||
|
||||
| niteo |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 129 Регистрация: 23.11.2006 Где: Брянск Репутация: нет Всего: 1 |
При создании окон, нада указать что одно из них - дочернее.
--------------------
Мне чужого лишнего не нада.Ешь ананасы, рябчиков жуй,день твой последний приходит, буржуй... |
|||
|
||||
| GremlinProg |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2706 Регистрация: 9.8.2005 Где: Тюмень Репутация: 99 Всего: 106 |
так же, только вместо ShowModal поставить локальный цикл обработки сообщений, типа как в WinMain, но условие выхода их него привязать в какой-нибудь переменной Finished пусть, к примеру на WM_DESTROY этого окна выполняется Finished = TRUE, тогда цикл может быть такой:
конечно, тогда нужно будет заблокировать остальные окна перед циклом, и восстановить их после выхода из цикла получится модальный диалог -------------------- "Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины." |
|||
|
||||
| Alca |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3993 Регистрация: 14.6.2006 Репутация: 5 Всего: 50 |
Типа так?
|
|||
|
||||
| GremlinProg |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2706 Регистрация: 9.8.2005 Где: Тюмень Репутация: 99 Всего: 106 |
да, можно и за борландом повторить
Finished === ModalResult -------------------- "Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины." |
|||
|
||||
| Alca |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3993 Регистрация: 14.6.2006 Репутация: 5 Всего: 50 |
GremlinProg, спасибо. И даже работает....
Это сообщение отредактировал(а) Alca - 18.9.2009, 13:59 |
|||
|
||||
| Emura |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 102 Регистрация: 7.2.2009 Репутация: 1 Всего: 1 |
Alca, GremlinProg,
думаю задача близка, как можно сделать такую весчЪ - есть главное окно, и несколько второстепенных, живущих вне главного(т.е. не внутри). второстепенные должны всегда находиться выше главного (даже если фокус на главном) вот как такое сделать? что-то ничего толкового в голову не приходит, эксперименты успехом не увенчались) спасибо! |
|||
|
||||
| GremlinProg |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2706 Регистрация: 9.8.2005 Где: Тюмень Репутация: 99 Всего: 106 |
это скорее всего решается проще: можно эти два второстепенных сделать попапами (при создании включить флаг WS_POPUP и указать в hwndParent главное окно )
-------------------- "Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины." |
|||
|
||||
| Emura |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 102 Регистрация: 7.2.2009 Репутация: 1 Всего: 1 |
GremlinProg
всё перепробовал, но не видел желаемого из-за конфликтов стилей(как сейчас понял). на чистом проекте без оберток всё получилось! дело за "малым" осталось найти глючок в ООП обертке. Cпасибо! |
|||
|
||||
| Emura |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 102 Регистрация: 7.2.2009 Репутация: 1 Всего: 1 |
уважаемые, подскажите, пожалуйста,
для реализации модальности окна этого достаточно или чего-то упустил?
ps. это ищется корень проблемы описанной тут static указатель Это сообщение отредактировал(а) Emura - 29.4.2010, 22:30 |
|||
|
||||
| Alca |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3993 Регистрация: 14.6.2006 Репутация: 5 Всего: 50 |
У меня так работает:
|
|||
|
||||
| Emura |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 102 Регистрация: 7.2.2009 Репутация: 1 Всего: 1 |
Alca,
спасибо! вроде то же самое только немного в профиль... идеально работает? никаких ошибок не выскакивало при таком подходе? Это сообщение отредактировал(а) Emura - 29.4.2010, 22:24 |
|||
|
||||
| Alca |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3993 Регистрация: 14.6.2006 Репутация: 5 Всего: 50 |
Не замечал
|
|||
|
||||
| Emura |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 102 Регистрация: 7.2.2009 Репутация: 1 Всего: 1 |
Alca,
спасибо за инфу. |
|||
|
||||
| GremlinProg |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2706 Регистрация: 9.8.2005 Где: Тюмень Репутация: 99 Всего: 106 |
если я все правильно понял, то это довольно распространенная ошибка, связанная например с записью за пределами распределенной памяти, например такое к ней так же может привести:
если не проявится в цикле (что оч. хорошо), проявится на операторе new (и хорошо, если он будет сразу за циклом - найти проще), т.е. к API проблема не относится, ищи "хитрый" код, и объясняй ему что надо быть проще :) -------------------- "Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины." |
|||
|
||||
![]()
|
| Правила форума "C/C++: Системное программирование и WinAPI" | |
|
|
На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы . Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |