Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.05.2019, 09:37   #1
taras-proger77
Заблокирован
 
Регистрация: 17.12.2018
Сообщений: 514
По умолчанию Как узнать размер страницы принтера?

Как узнать размер страницы принтера? И как узнать его минимальные поля?
taras-proger77 вне форума Ответить с цитированием
Старый 09.05.2019, 11:28   #2
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,493
По умолчанию

GetDeviceCaps()
PHYSICALOFFSETX
PHYSICALOFFSETY
waleri вне форума Ответить с цитированием
Старый 13.05.2019, 18:41   #3
taras-proger77
Заблокирован
 
Регистрация: 17.12.2018
Сообщений: 514
По умолчанию

У PDFCreator ноли, у настоящего принтера обе пр 94.

Последний раз редактировалось taras-proger77; 13.05.2019 в 18:46.
taras-proger77 вне форума Ответить с цитированием
Старый 14.05.2019, 04:11   #4
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,493
По умолчанию

И что?
Минимальное поле не может быть 0?
waleri вне форума Ответить с цитированием
Старый 22.05.2019, 06:31   #5
taras-proger77
Заблокирован
 
Регистрация: 17.12.2018
Сообщений: 514
По умолчанию

Так это поле? Так опять не выходит. Сторон у листа 4, соответственно, полей 4.
taras-proger77 вне форума Ответить с цитированием
Старый 22.05.2019, 15:21   #6
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,493
По умолчанию

Документацию не пробовали читать?
Узнете много нового...
https://docs.microsoft.com/en-us/win...-getdevicecaps
waleri вне форума Ответить с цитированием
Старый 22.05.2019, 15:31   #7
taras-proger77
Заблокирован
 
Регистрация: 17.12.2018
Сообщений: 514
По умолчанию

Ну это я читал ещё в 2003-м. Как получить размер бумаги, не понятно всё равно.
Код:
GetDeviceCaps(PrinterDeviceContext, VERTSIZE)
возвращает высоту печатной области,
Код:
GetDeviceCaps(PrinterDeviceContext, HORZSIZE)
– её ширину. А сколько от неё до краёв листа? Для печати хорошо, если задача максимально использовать бумагу. Но для предварительного просмотра надо нарисовать сам лист и на нём нарисовать то, что нём будет напечатано. А для этого нужны размеры бумаги. Двух полей для этого мало,
Код:
GetDeviceCaps(PrinterDeviceContext, VERTSIZE)+GetDeviceCaps(PrinterDeviceContext, PHYSICALOFFSETY)
даст расстояние от верхнего края бумаги до нижнего края печатной области, но ничего не скажет о высоте бумаги, а
Код:
GetDeviceCaps(PrinterDeviceContext, HORZSIZE)+GetDeviceCaps(PrinterDeviceContext, PHYSICALOFFSETX)
даст расстояние от левого края бумаги до правого до правого края печатной области, но ничего не скажет о ширине бумаги. Может печатная область A4 минус 2см со всех сторон, а бумага B4? Понятно, что фактическими измерениями принтер не занимается. Но какой-то формат бумаги он «считает» номинальным. Как его узнать?

Последний раз редактировалось taras-proger77; 22.05.2019 в 15:45.
taras-proger77 вне форума Ответить с цитированием
Старый 13.11.2019, 10:46   #8
sanela
Пользователь
 
Регистрация: 07.12.2009
Сообщений: 19
По умолчанию

Может кто подскажет или знает, как изменить значения, которые хранятся в VERTSIZE, HORZSIZE или из каких параметров они высчитываются, то есть как-то повлиять на результаты вычисления?
Есть такая SCADA (система) Adroit (самая старо-доступная версия 8.4.2.7 на 13.11.2019). Система настроена. При открытии мимки (*.mim) с элементами (прямоугольники, текст, кривые, группы объектов и т.д.) на разных ПК, точнее ОС Windows (XP, Server, 7) происходит смещение в сторону (по горизонтали и вертикале). Выяснил, что на все смещения и искажения влияют VERTSIZE и HORZSIZE. Так же выяснил, что VERTSIZE и HORZSIZE отличаются при удаленном подключении к рабочему столу (RDP) при тех же мониторов и настроек для этих мониторов. Выяснил с помощью простой утилитой, написанной для этих целей.

Последний раз редактировалось sanela; 13.11.2019 в 10:47. Причина: опечатка
sanela вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Определить размер веб-страницы по оси X и Y милт Работа с сетью в Delphi 3 06.04.2014 09:32
Размер страницы iukash HTML и CSS 10 22.04.2013 18:39
Размер страницы в кб. Alex Cones HTML и CSS 6 27.09.2010 12:54
Как сделать разрыв страницы печати по условию и узнать номер страницы Leanna Microsoft Office Excel 2 21.01.2008 06:59
Изменить размеры страницы принтера Shuraken Win Api 1 30.08.2007 05:14