![]() |
|
|
![]()
|
|
| Xedin |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 11 Регистрация: 3.3.2007 Репутация: нет Всего: нет |
У меня есть диалоговое приложение. Из него по нажатию кнопки вызывается немодальный диалог:
Всё открывается всё отлично но если я жмякаю по родительскому....оно отображается под созданным...как зделать чтоб оно вылазило на первый план?? |
|||
|
||||
| dizzy1984 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 675 Регистрация: 15.2.2007 Репутация: 10 Всего: 25 |
У немодального диалога может стоять WS_EX_TOPMOST, которое заставляет его быть верхним для окон без этого флага. Это ты можешь проверить с помощью spy++.
|
|||
|
||||
| Xedin |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 11 Регистрация: 3.3.2007 Репутация: нет Всего: нет |
Отлично классно...как же я не догадался...осталось тока выяснить что такое spy++...
Насчёт флага....там такой не стоит вообще ни где... |
|||
|
||||
| dizzy1984 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 675 Регистрация: 15.2.2007 Репутация: 10 Всего: 25 |
tools->spy++
Если ты этот флаг не ставил руками, скорее всего его не будет. Прикрепи исходники программы и скажи на чем она была написана. |
|||
|
||||
| Xedin |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 11 Регистрация: 3.3.2007 Репутация: нет Всего: нет |
Написана на Visual C++ 6.0.
На основе обычного диалогового приложения с использованием MFC. Создали понатыркали кнопок эдитов и т.д. И вот мне нужно чтоб по нажатию на одну из кнопок вызывалось немодальное диалоговое окно. Как это будет происходить мне по любому...я делал это как показано в примере выше....просто мне нужно чтобы я мог переходить с главного окна на дочернее и обратно....и чтоб они не перекрывали друг друга...а у меня получается что переходить могу, но главное под дочерним и надо его вытаскивать. Флагов в ручную ни каких не ставил. |
|||
|
||||
| dizzy1984 |
|
||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 675 Регистрация: 15.2.2007 Репутация: 10 Всего: 25 |
Вобщем интересный вопрос получился.
Ваша проблема в том, что MFC создает немодальное окно как потомок основного окна программы. Когда происходит отрисовка основного окна оно отрисовывает и все дочерние, а, т.к, у вас дочернее немодальное окно может частично перекрывать основное, то получается что оно как бы на заднем плане, хоть и активно. В MFC нет способа сделать так как вы хотите. Нужно расширить функционал класса CDialog и заставить по-другому работать метод Create, в частности чтобы он не тревожился по поводу отсутствия окна-родителя для создаваемого немодального окна. Вот такая реализация метода CreateNoParent сделает "безродное" немодальное окно, что вам и нужно. Добавьте этот прототип и определение к классу отнаследованному от CDialog и наследуйте от него все ваши классы немодальных окон, либо, если у вас только 1-н такой класс, добавьть прототип и определение непосредственно к нему.
реализация использует
так что он должен быть виден ею.
|
||||||
|
|||||||
| Прохожий |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 79 Регистрация: 12.1.2007 Репутация: 1 Всего: 1 |
dlg.Create(IDD_DIALOG1,GetDesktopWindow()); И всё будет ок |
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Visual C++/MFC/WTL | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |