Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.10.31;
Скачать: CL | DM;

Вниз

Длина имени принтера в DeviceMode   Найти похожие ветки 

 
dmk ©   (2004-09-25 15:02) [0]

Ограничение на длину имени принтера в WinApi - 32 знака.
Об этом говорит константа CCHDEVICENAME.
Пытаюсь создать информационный контекст с длиной имени
более 32 символов и функция возвращает 0.
Вот имя: "Microsoft Office Document Image Writer".
Но другие программы обходят как то обходят это.
Подскажите! Как решить проблему?
Нужен информационный контекст с параметрами принтера.

PrinterDC := CreateIC(nil, PChar(FPrnName), nil, PDeviceModeA(@FDevMode^));


 
PGM_X   (2004-09-25 23:26) [1]

MSDN
lpszDriver
[in] Pointer to a null-terminated character string that specifies the name of the device driver (for example, Epson).
lpszDevice
[in] Pointer to a null-terminated character string that specifies the name of the specific output device being used, as shown by the Print Manager (for example, Epson FX-80). It is not the printer model name. The lpszDevice parameter must be used.

Может надо указывать первый параметр тоже? Формально здесь ограничений по длине для второго нет. Ограничения CCHDEVICENAME только в возвращаемой структуре DEVMODE. Полагаю dmSize в ней правильно инициализировано :-).


 
dmk ©   (2004-09-26 14:29) [2]

Первый и третий параметры совсем не обязательны.

>Ограничения CCHDEVICENAME только в возвращаемой структуре DEVMODE
Вот я про что и говорю! Если в DevMode имя принтера задано не полностью, то контекст не создается =(


 
dmk ©   (2004-09-26 14:41) [3]

>Формально здесь ограничений по длине для второго нет.
Так я про второй параметр и не говорю.
Структура DevMode тоже должна быть правильно заполнена.

Во! Нашел!!!!! =)
Оказывается я неправильно заполнял массив имени.
Нужно просто взять первые 32 символа имени и скопировать их
в dmDeviceName,а 32 символ не заполнять нулем, как делал я.
Тогда все работает.
Только вот странно, если в системе будет 2 принтера
с таким длинным и одинаковым именем, а окончание которое не влезает в 32 символа будет различаться, то сможет ли система определить нужный девайс?


 
PGM_X   (2004-09-27 00:06) [4]

> Только вот странно, если в системе будет 2 принтера с таким длинным и одинаковым именем, а окончание которое не  влезает в 32 символа будет различаться, то сможет ли система определить нужный девайс?

Так для этого наверное второй параметр и нужен? В нем-то огрвничений нет.


 
dmk ©   (2004-09-27 02:49) [5]

>Так для этого наверное второй параметр и нужен? В нем-то огрвничений нет.
Логично и достоверно.
В общем создал я 3 таких принтера - проблем пока не было.



Страницы: 1 вся ветка

Текущий архив: 2004.10.31;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.032 c
9-1088312156
X-Disa
2004-06-27 08:55
2004.10.31
Скролл экрана


1-1098166443
jenbond
2004-10-19 10:14
2004.10.31
подсветку подставленных переменных в FastReport


9-1087559839
Sormy
2004-06-18 15:57
2004.10.31
AI


10-1054029776
serg_
2003-05-27 14:02
2004.10.31
Проблема "лишних" GDI-объектов в corba-сервере


14-1096499566
ExEcUTER
2004-09-30 03:12
2004.10.31
"Помошник экзаменатора"и игра "Кости"..курсовая..