Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.023 c
1-1097530297
Ezhik
2004-10-12 01:31
2004.10.31
Ход конём


3-1096900734
ANT1
2004-10-04 18:38
2004.10.31
Как в сессии изменить значение NLS_LANG ?


1-1097776898
Viper
2004-10-14 22:01
2004.10.31
ФАЙЛЫ


1-1097598677
Chieftain
2004-10-12 20:31
2004.10.31
Переменные


1-1098004886
Татьяна
2004-10-17 13:21
2004.10.31
StringGrid. Как переместить фокус ввода в определенную ячейку???




   Наверх