Главная страница
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.47 MB
Время: 0.022 c
4-1093953932
Unknown Mystic
2004-08-31 16:05
2004.10.31
Ошибка в функции, содержащей WinAPI (CreateProcess и др.)


14-1097172164
Abzz
2004-10-07 22:02
2004.10.31
Сколько стоит?


14-1096035912
ceval
2004-09-24 18:25
2004.10.31
Подскажите компанент


14-1097606468
tox
2004-10-12 22:41
2004.10.31
Работа с плейлистами.


1-1097916010
Merfi
2004-10-16 12:40
2004.10.31
Изменение длины переменной типа string во время работы