Pirs |
Отправлено: 31.08.2004, 16:12 |
|
Дежурный стрелочник
Группа: Участник
Сообщений: 39
|
Надо узнать ширину экрана в миллиметрах, для точного вывода на печать.
Для принтера просто
width = GetDeviceCaps ( Printer()->Handle , HORZSIZE ) ;
Как определить Handle для монитора ?
В объекте Screen свойства Handle нету…..
|
|
** avtoritet |
Отправлено: 31.08.2004, 17:25 |
|
Не зарегистрирован
|
GetSystemMetrics(SM_CXSCREEN);//по горизонтали в пикселях
GetSystemMetrics(SM_CYSCREEN);//по вертикали в пикселях
Нужно мм — перемнож все что нужно и получишь милиметрах. |
|
Pirs |
Отправлено: 31.08.2004, 19:45 |
|
Дежурный стрелочник
Группа: Участник
Сообщений: 39
|
QUOTE (** avtoritet @ 31/08/2004, 18:27) | Нужно мм — перемнож все что нужно и получишь милиметрах. |
А что еще "перемножить", если неизвестен размер монитора (14",15" и т.д.)
В пикселах — это понятно
Screen->Width и так далее...
Вопрос был о другом: как получить Handle монитора, чтоб вызвать функцию
width=GetDeviceCaps ( Handle (монитора) , HORZSIZE ) ;
В описании этой функции есть даже параметр TECHNOLOGY, который может вернуть в том числе значение DT_RASDISPLAY (Raster display).
Но надо узнать хэндл. У Screen его нет.
А может это зависит от аппаратных драйверов ?
|
|
** avtoritet |
Отправлено: 01.09.2004, 01:31 |
|
Не зарегистрирован
|
Доброй ночи, кто не спит!
Извини, не понял тебя немного. Значит нужен хэндл:
HDC hdc = GetDC(GetDesktopWindow());//
можно проще:
hdc = GetDC(NULL);
вообщем в обеех случаях получаем, что ты просишь.
СООТВЕТСТВЕННО:
GetDeviceCaps(hdc, HORZSIZE);//по горизонатли
GetDeviceCaps(hdc, VERTSIZE);//по вертикали
НО:
но у меня почему-то на 19 дюймовом по горизонтали 320, а по вертикали 240. Если верить линейке, то: во вертикали 275, по горизонтали 365. Вот этого я немного не понимаю.
Черкни, устраивает ли тебя этот вариант. Может заешь почему вместо 275 — 240, 365 — 320? |
|
Pirs |
Отправлено: 01.09.2004, 09:47 |
|
Дежурный стрелочник
Группа: Участник
Сообщений: 39
|
У меня LCD в ноутбуке и размеры выдала идеально точные 270х203.
Мерял линейкой — все точно до миллиметра.
Разница может быть связана с драйвером монитора. Может дрова стоят для 18” или 17” ?
|
|
** avtoritet |
Отправлено: 01.09.2004, 14:35 |
|
Не зарегистрирован
|
Рад что утебя работает! Я разобрался в чем дело с моим монитором. У меня телек подключен как второй монитор: чтобы фильмы на нем смотреть лежа на диване — вещь реальная. На телеке развертка 65, на мониторе 85. Получается как 17 и 19 по стандарту. Отключаю телек от монитора — все путем! Ну ладно — одной делемой меньше! |
|