Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Visual C++/MFC/WTL > Повязанное окно но не модальное


Автор: lpn 15.11.2005, 19:08
Кроме основного окна, в программе имеется ещё одно. Основанное на диалоге. Создаётся оно с начала работы программы, но показывается время от времени.
Задача такая:
В то время когда окошко видно, оно должно:
_Скрываться когда главное окно сворачиваеться
_Появляться когда Главное окно восстанавливается
_Появляться (но не активизироваться (типа SW_SHOWNA)) когда Главное окно активизируется
_Исчезать когда Главное окно теряет фокус

Короче быть как-бы модальным окном.
Но в тоже время оба окна должны иметь возможность получить фокус.

Да и самое главное: дополнительное окно должно быть всё время поверх главного окна.

Как бы это сделать попроще.

Устал уже ловить сообщения одного окна из другого.
Только начал писать программу, а она уже забита кучей функций.

Чуствую что можно сделать проще. То что я хочу встречаться очень часто.
Может настроить определённым образом свойства окна/окон?

Автор: Earnest 15.11.2005, 21:19
Самое простое (в MFC) - использовать не диалог, а диалоговую панель (CDialogBar), со стилем CBRS_MULTIU и запретить ей пристыковку. Если не ошибаюсь, получишь все, что перечислил. Почитай про docking control bars в MFC, чтобы разобраться с возможными стилями.

Автор: lpn 16.11.2005, 15:53
Наверное такая панель подошла бы, но есть одна проблема - у меня главное окно на основе CDialog.

Автор: Earnest 16.11.2005, 20:13
Да, главное окно должно быть СFrameWnd. Так в чем проблема? Сделай CFrameWnd + СFormView вместо диалога. Иначе придется все нужное поведение панели руками писать. CFrame Wnd, кроме прочего, много полезного умеет, что не умеет диалог - подсказки показывать, команды диспетчить по разному, OnIdleUpdate и пр.пр.пр.

Автор: lpn 17.11.2005, 11:27
OK. Попытаемся изучить.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)