1

Тема: AHK: Сжать содержимое окна или увеличить размер выше разрешения экрана

Добрый день.
Имеется CarPC c разрешением экрана 800x600. Есть программа, предназначена для разрешения, минимум, 1024x768. При запуске на 800x600, окно урезается и становятся не видны часть органов управления (они находятся за пределами экрана и срабатывают, если их вслепую активировать с клавиатуры). Временно менять разрешение экрана (например, с помощью PowerStrip) не подходит, так как при этом "слетает" калибровка тачскрина. Постоянно использовать 1024x768 невозможно - все слишком мелко.

Вижу два варианта решения, но не могу реализовать:
1. Принудительное изменение размеров окна программы до 1024x768 (больше текущего разрешения), пусть часть окна будет за пределами экрана - тогда можно будет написать скрипт для перемещения окна кликом в любой его точке и работать с его видимой частью.
2. Масштабирование (сжатие) содержимого окна, чтобы оно вписалось в 800x600, но фактически имело разрешение 1024x768. Это мне кажется более удобным для использования.

Как известно, Windows XP не позволяет увеличивать размер окна, больше чем текущее разрешение. В старых версиях Windows это было возможно. Вот это ограничение и мешает.

Простая тестовая команда:

WinMove, Безымянный - Блокнот, , , , 3500, 200

Попытка расширить Блокнот заведомо больше текущего разрешения, приводит лишь к достижению максимальной ширины экрана, но не более.

Пожалуйста, дайте подсказку или полезные ссылки. Я честно просмотрел 23 страницы этого раздела, но ничего похожего не нашел.

Спасибо.

2 (изменено: Александр_, 2011-12-09 03:35:08)

Re: AHK: Сжать содержимое окна или увеличить размер выше разрешения экрана

Alex_E пишет:

Как известно, Windows XP не позволяет увеличивать размер окна, больше чем текущее разрешение. В старых версиях Windows это было возможно. Вот это ограничение и мешает.
Простая тестовая команда:

WinMove, Безымянный - Блокнот, , , , 3500, 200

Попытка расширить Блокнот заведомо больше текущего разрешения, приводит лишь к достижению максимальной ширины экрана, но не более..

Блокнот обрабатывает сообщение WM_GETMINMAXINFO, в котором устанавливает максимальный размер окна. Можно самому создать окно и убедится, что система не против того, чтобы размер окна превышал разрешение экрана:

Gui Add, Text
gui show
WinMove ahk_classAutoHotkeyGUI, , , , 3500, 200
return

Esc::
GuiClose:
   ExitApp
Alex_E пишет:

2. Масштабирование (сжатие) содержимого окна, чтобы оно вписалось в 800x600, но фактически имело разрешение 1024x768. Это мне кажется более удобным для использования.

А какой там интерфейс? Если из стандартных элементов управления, то достаточно все контролы в цикле перебрать и масштабировать.

3

Re: AHK: Сжать содержимое окна или увеличить размер выше разрешения экрана

Александр_ пишет:

...А какой там интерфейс?

Программа сделана на ядре старой Мозилы (исполнительный файл: mozilla.exe). Вот так этот exe-шник запускается напрямую:
http://s50.radikal.ru/i130/1112/06/e00c77998431t.jpg

Но основной запускающий файл другой, он передает параметры Мозиле таким образом, что остается лишь часть контролов, убираются все меню и скроллы. Окно масштабируется в сторону уменьшения, но не увеличивается больше чем экран. Я думал, может принудительно отобразить скроллы, но не уверен, что они будут работать - я пробовал программу (MouseImp), которая скроллит окна, схватив их по центру - она стрелки отображает, но окно не сдвигается.

Так выглядит основной интерфейс при разрешении 1366x768 (800x600 стоит в машине, поэтому пока не могу сделать скриншот):
http://s001.radikal.ru/i194/1112/84/bf845f5aeeadt.jpg

При 800x600 масштаб тот же, но срезаны все нижние кнопки и правая часть.

Александр_ пишет:

Если из стандартных элементов управления, то достаточно все контролы в цикле перебрать и масштабировать.

Боюсь, как бы не пришлось заниматься Web-дизайном...