|
Исследователь
318 / 317 / 24
Регистрация: 06.04.2011
Сообщений: 872
|
|
Автоматическое изменение размера основного окна приложения29.12.2011, 12:49. Показов 2280. Ответов 3
Метки нет (Все метки)
Поиск сабжа ничего не дал. А я сижу и не что-то могу сообразить
![]() Имеем основное окно приложения, на котором расположены несколько компонентов. Пусть это будут панель инструментов, таб-контрол и строка состояния. С первым и последним все понятно, они умеют подстраиваться под размер окна. Таб не умеет, но у него есть макрос TabCtrl_AdjustRect, который позволяет задать желаемые размеры. У основного окна тоже есть функция AdjustWindowRect, действие которой аналогично вышеуказанному макросу. По определенным причинам придется делать перебор всех дочерних (по отношению к основному) окон через EnumChildWidows (можно и EnumWindows). И что-то тут вот и затупил. Получаю в EnumChildProc прямоугольник "дочки", выбираю и сохраняю в памяти наибольшие значения по обоим осям и скармливаю затем результат AdjustWindowProc для основного окна. И получаю окно на 100 пикселей больше текущего разрешения рабочего стола. Т.е., например, 1380х1124.
0
|
|
| 29.12.2011, 12:49 | |
|
Ответы с готовыми решениями:
3
Изменение размера окна в WinAPI Изменение размера клиенсткой области окна
|
|
16 / 9 / 0
Регистрация: 20.12.2011
Сообщений: 20
|
|
| 29.12.2011, 14:20 | |
|
Если основное окно создаёте через CreateWindowEx (если есть какие-то доп. стили) - то не сработает AdjustWindowRect, надо пробовать AdjustWindowRectEx.
А вообще интересно было бы код посмотреть, как Вы там что делаете. Добавлено через 34 минуты А вообще эта AdjustWindowRect наверное использует GetSystemMetrics. Можно попробовать самим определить толщину неклиентской области окна с помощью этой функции.Там у неё куча параметров-SM_CYBORDER,SM_CXBORDER,SM_CXSIZEFRAME,S M_CYSIZEFRAME...и т.д. А затем полученные значения границ прибавлять к требуемой клиентской области окна и получать таким образом общую ширину и высоту окна.
0
|
|
|
Исследователь
318 / 317 / 24
Регистрация: 06.04.2011
Сообщений: 872
|
||
| 29.12.2011, 19:58 [ТС] | ||
|
Загвоздка состоит в том, что основное окно содержит, допустим, три "дочки", одна из которых - Tab control. Который, в свою очередь, содержит диалоги со своими органами управления, которые тоже будут перечисляться в EnumChildWindows (так уж устроена функция, на базе рекурсии, ничего не поделаешь). Таб я еще могу "выстроить" как надо, чтобы он имел размеры, необходимые для вмещения дочернего диалога. А вот с более "высокопоставленным", т.е. родительским, основным, окном - затуп. Как сложить несколько прямоугольников, получив размер общей области. Не нашел такой функции, кроме InflateRect, которая просто увеличивает/уменьшает размер указанного прямоугольника. Но вот как применить все это в callback-функции EnumChildProc - вот тут я туплю.
0
|
||
|
16 / 9 / 0
Регистрация: 20.12.2011
Сообщений: 20
|
||
| 29.12.2011, 21:27 | ||
0
|
||
| 29.12.2011, 21:27 | |
|
Помогаю со студенческими работами здесь
4
(1-уровнь) Параметры основного окна Отправить сообщение приложению без основного окна
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога
Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
|
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога
Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
|
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога
Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
|
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
|
|
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога
В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
|
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
|
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога
Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
|
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
|