Что нового

Заметно-увеличенное отображение текста в некоторых элементах в Windows 7

beve

Осваивающий
Сообщения
104
Репутация
31
Здравствуйте. У меня вопрос следующий.
Имеется окно с элементом Label. В Label есть текст, шрифт которого изменен на большее значение, для лучшего визуального восприятия. Думаю это всем понятно. На Windows XP все отображается как надо. Но вот на Windows 7, если в настройках Экрана (Windows 7) выбрано увеличение шрифта с обычного на Средний-125%, то текст вылазит за пределы самого элемента Label (хотя такое наблюдается и в других елементах, где текст при изменения шрифта тоже становиться крупнее).
Кто может что то подсказать по этому поводу. Как вариант я вижу, что сделать можно так, проверять какая ось, и если Windows 7, то проверить увеличение шрифта в системе и если он больше чем 100%, то задавать дефолтный шрифт в нужном мне label, а если обычный то то уже можно изменять как нужно. Но это только теория, ибо не знаю где хранится параметр увеличения шрифта в Windows 7, чтобы его мог прочитать скрипт autoit. Может кто знает? Или какие будут идеи по этому поводу. Может уже где то кто то спрашивал на этот счет, то прошу дать ссылку в тему.
 
Автор
beve

beve

Осваивающий
Сообщения
104
Репутация
31
Сам решил. Суть такая, что при изменении для лучшего чтения текста в Win 7 изменяется значение параметра "LogPixels" в ключе "HKEY_CURRENT_USER\Control Panel\Desktop" на (десятичное представление):
96 - что соответствует 100% (по умолчанию)
120 - что соответствует 125%
144 - что соответствует 150 %.

Пример:
Код:
#include <GUIConstantsEx.au3>
Global $Fontsize=9
Global $Fontweight =800 ;400 = normal
;-------------------------------------------------------
If @OSVersion = "WIN_7" then 
	$sRegParam=RegRead("HKEY_CURRENT_USER\Control Panel\Desktop", "LogPixels")
#cs 	$sRegParam val:
   	;96 - 100%
   	;120 - 125%
   	;144 - 150 %
#ce
	Select
		case $sRegParam==96
			$Fontsize=9
			$Fontweight =800 ;400 = normal
		case $sRegParam==120
			$Fontsize=6
			$Fontweight =800 ;400 = normal
		case else
			$Fontsize=5
			$Fontweight =800 ;400 = normal
	EndSelect
endif
;-------------------------------------------------------

$hGui = GUICreate("Test", 250, 25)
$Label = GUICtrlCreateLabel("Label1", 5, 5, 240, 19)
GUICtrlSetFont(-1, $Fontsize, $Fontweight, 0, "MS Sans Serif")
GUISetState(@SW_SHOW)


While 1
	$nMsg = GUIGetMsg()
	Switch $nMsg
		Case $GUI_EVENT_CLOSE
			Exit

	EndSwitch
WEnd
 
Автор темы Похожие темы Форум Ответы Дата
D Общие вопросы по AutoIt 2
Верх