Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > C++ Builder
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 30.01.2012, 12:42   #1
AndrewSem
Новичок
Джуниор
 
Регистрация: 30.01.2012
Сообщений: 1
По умолчанию TPrinter() как установить размер бумаги

Всем привет. Столкнулся с проблемой. Есть стандартный принтер для бумаги А4. Нужно на принтере напечатать что-то но на другом формате бумаги (стандартный формат, предусмотренный Windows), например А6. При этом, системные настройки принтера не должны меняться. (Те настройки, что в «стройствах и принтерах->настройка печати») В каких то старых книжках прочитал, что нужно использовать структуру PDEVMODE. На форумах нашел похожий код на Delphi. Правда там не размеры меняют, а число копий и т.д…Мой код никаких ошибок не выдает, но и ничего не делает почему-то. Может кто знает в чем дело?
Код:
Printer()->PrinterIndex = 2;
ShowMessage("Область печати (до изменений): " + IntToStr(Printer()->PageWidth) + "x" + IntToStr(Printer()->PageHeight));   	
UnicodeString DeviceName, DriveName, PortName;  //Фиктивная переменная
THandle hPrnDevMode;                            //Фиктивная переменная
PDEVMODE pDevMode;                              //Указатель на структуру DeviceMode
Printer()->GetPrinter(DeviceName.c_str(), DriveName.c_str(), PortName.c_str(), hPrnDevMode);
if (hPrnDevMode == 0)
{
	ShowMessage("Не получилось настроить параметры печати!");
	return;
}
//Получаем указатель на структуру DEVMODE
pDevMode = (PDEVMODE) GlobalLock((HANDLE)hPrnDevMode);
if (pDevMode == NULL)
{
	ShowMessage("Не получилось настроить параметры печати!");
	return;
}
//Настраиваем параметры печати
pDevMode->dmFields |= DM_PAPERSIZE;
pDevMode->dmPaperSize = DMPAPER_A6;
//Освобождаем структуру DEVMODE
GlobalUnlock((HANDLE)hPrnDevMode);
ShowMessage("Область печати (после изменений): " + IntToStr(Printer()->PageWidth) + "x" + IntToStr(Printer()->PageHeight));
AndrewSem вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
шапка на сайте - установить размер на 100% Xeadshot HTML и CSS 1 11.02.2011 07:43
asio: установить размер буфера в примере HTTP клиента soulmare C/C++ Сетевое программирование 0 03.11.2010 19:44
Установить размер формы -=Virus=- Общие вопросы Delphi 2 30.10.2010 17:14
Установить размер клиентской обл. окна Ulex Win Api 0 12.04.2010 01:47
Как установить тип и размер шрифта к документу? Alexpoliv Microsoft Office Word 2 23.08.2009 22:06