| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets > wxFrame проблемы Iconize Maximize Move SetSize |
| Автор: JavaCraft 3.11.2008, 15:38 | ||||||
| В родительском окне нужен плавающий фрейм с кнопками wxMINIMIZE(=wxICONIZE), wxMAXIMIZE и восстановление, но без кнопки wxCLOSE Исходное состояние №1 фрейма = wxICONIZE и заданные координаты X0,Y0 Двойной клик по заголовку должен перевести его из начального состяния в состояние №2 с заданным размером(во всю ширину экрана и по высоте примерно 1/5) и другими заданными координатами X1,Y1 в нижней части экрана. Состояние №3 это видоизмененное состояние №2 с большей высотой окна фрейма. Для пошагового изменения высоты во фрейме созданы специальные кнопки. Двойной клик по заголовку в состояни №2 или №3 должен перевести его в состояние №4 wxMAXIMIZE Двойной клик по заголовку в состоянии №4 должен перевести его в исходное состояние №2 или №3 в зависимости от предыдущего Клик по кнопке wxMINIMIZE должен минимизировать фрейм в состяние №1 с исходными координатами. Для этого Создаю Фрейм в родительском окне.
Проблема сразу - Фрейм создается без кнопок в заголовке, так что нет возможности его Минимизировать(Иконизировать). Кнопки появляются только вместе с wxCLOSE, в стиле обычного окна(несколько окон в панели задач) и с включенным системным меню. Всё это мне не нужно. Тогда добавил во фрейм свои кнопки, выполняющие эти функции, но они работают крайне странно. Независимо от команд, они только максимизируют окно, даже по команде Iconize(). Вот обработчики этих кнопок. Установить флаги во время исполнения также не получилось. Кнопки либо зависают, либо только максимизируют фрейм.
Туплю уже второй день. В интернете всё безоблачно, в документации ничего на этот счет не нашел. |
| Автор: JavaCraft 3.11.2008, 15:54 |
| Еще можно добавить, что Максимизация надежно работает только при двойном клике по заголовку. В разных попытках у меня не работала функция Maximize(), как и все прочие, но заголовок работал почти всегда. Windows 2000, Code::Blocks 8.02, wxWidgets 2.8.9 |
| Автор: t_rex 3.11.2008, 19:19 |
| Можешь демо-проект целиком выложить? Попробую помочь. |
| Автор: JavaCraft 3.11.2008, 21:53 | ||
| Проблема была связана со стилем WXFRAME_TOOL_WINDOW и без WXSYSTEM_MENU, да еще на других платформах косяки могли вылезти. Подумал над этими трудностями и решил всё упростить и кардинально изменить концепцию. Первоначально предполагалось, что минимизированные фреймы с заголовками являются как-бы подписями объектов(1..5) на изображении. Системные кнопки минимизации, максимизации, закрытия здесь оказываются не к месту. Однако, когда окошки раскрываются, без этих кнопок работать с ними трудно. Пришел к выводу, что правильнее будет согласится с дефолтными стилями и не использовать фреймы в качестве подписей к объектам. Создаю один фиксированный фрейм внизу экрана, с дефолным стилем и флагами запрещающими отображать его в панели задач. Разрешаю отображение и использование wxCLOSE_BOX, т.к. в новой версии это окно будет создаваться по нажатии на подпись объекта на изображдении, если оно отсутсвует, и в него будет загружаться актуальная информация. Подписи реализую не фреймами, а на основе чего-нибудь более подходящего. В общем, так и вышел из положения. Стиль фрейма
|