Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2004.10.31;
Скачать: [xml.tar.bz2];

Вниз

Длина имени принтера в 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 вся ветка

Форум: "WinAPI";
Текущий архив: 2004.10.31;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.45 MB
Время: 0.039 c
3-1096560118
-=Krocki=-
2004-09-30 20:01
2004.10.31
Как хранить данные?


14-1097475279
Мазут Береговой
2004-10-11 10:14
2004.10.31
Американцы сняли фильм. Называется "Такси"...


4-1096379974
Гость
2004-09-28 17:59
2004.10.31
Языки операционных систем


8-1090659273
crizis
2004-07-24 12:54
2004.10.31
как убрать мерцание с помощью двойной буферизции


10-1033976830
rootadmin
2002-10-07 11:47
2004.10.31
Ошибка в DLL (CORBA клиент)





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский