Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Структура DEVMODE принтера - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Прорисовка математических формул http://www.cyberforum.ru/cpp-beginners/thread466889.html
Задача: Организовать отрисовку мат формул в их нормальном виде (что-то наподобие MathCad или Maple) Если кто-нибудь сталкивался с чем-то похожим, знает как это делать, встречал компоненты...
C++ Как в С++ или MFC получить список файлов? Как в С++ или MFC получить список файлов (желательно всетаки в С++)? http://www.cyberforum.ru/cpp-beginners/thread466882.html
Как перехватить исключение C++
Всем привет. Имеется CBuilder5, MSSQL6.5 через ADO Часто вылетает 'OLEPRO32.DLL не может быть инициализирована' как эту беду перехватить для последующей обработки. Дополнительно MDAC2.6 и заплатка...
C++ Несколько потоков - в 98 работает, в 2000 - нет!
В проге создаётся несколько потоков для каждого из которых отображается файл в память (с хендлом FFFFFFF, те выделяю память), после чего каждый поток по имени открывает свою память и юзает. В 98-...
C++ Реализация форума на C++ http://www.cyberforum.ru/cpp-beginners/thread466820.html
Подскажите, где можно скачать исходник off-line форума на C++ или скиньте мэйл.
C++ Как подключить lib библиотеку к компоненту? Пишу компонент в Билдере. Необходимо подключить к нему lib библиотеку. Если такое возможно, подскажите пожалуйста как это сделать. подробнее

Показать сообщение отдельно
kwas
0 / 0 / 0
Регистрация: 09.03.2008
Сообщений: 8

Структура DEVMODE принтера - C++

29.04.2008, 22:12. Просмотров 984. Ответов 0
Метки (Все метки)

Люди, подскажите, кто грамотный, как заполучить структуру DEVMODE принтера.
Теория такая: определяем размер этой структуры (для каждого притера разный), соответственно, выделяем под неё память, передаем указатель на неё в API-функцию DocumentProperties, читаем нужные поля.
Делаю так:

#include <wingdi.h>

String DevName = 'HP DJ 1220C'; // для проверки пишу руками
LPHANDLE phPrinter;
OpenPrinter (DevName.c_str(), phPrinter, NULL); //получаю хэндл принтера

//получить требуемый размер структуры DEVMODE (не работает)
long bufsize = DocumentProperties(Handle, phPrinter, DevName.c_str(),0,0,0);

/* даже если определить этот размер другим способом, */
long bufsize1, bufsize2;
bufsize1 = DeviceCapabilities(DevName.c_str(), 'LPT1:', DC_SIZE, '',0);
bufsize2 = DeviceCapabilities(DevName.c_str(), 'LPT1:', DC_EXTRA,'',0);
bufsize = bufsize1 + bufsize2;
/* то как потом _переопределить_ размер этой структуры для передачи
в эту же функцию четвертым параметром*/

PDEVMODE dmOutDM; // такой тип требует функция DocumentProperties
DocumentProperties(hFr,phPrinter,DevName.c_str(),dmOutDM,0,2); // всегда
возвращает ошибку

И ничего не получается. Я понимаю, что ошибка в ДНК, но может быть и еще где-то.

ЗЫ: А вообще-то задача получить/установить определённый формат бумаги.
Не в мм, а по названию (А3, А4, ...).
Если это можно сделать както проще, то, плиз, подскажите.

--
Константин Васильев
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru