| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > 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. Попытаемся изучить. |