Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Вывод на принтер с помощью WinApi

1.2K
25 марта 2002 года
soaron
3 / / 20.05.2000
Мои приветствия!

Проблема в следующем - необходимо выводить на принтер сообщения неким шрифтом некого размера. Реализация следующая

hFont = CreateFont( 100, 0, 0, 0, FW_NORMAL,
0, 0, 0, ANSI_CHARSET,
OUT_DEFAULT_PRECIS,
CLIP_DEFAULT_PRECIS,
DEFAULT_QUALITY,
DEFAULT_PITCH | FF_ROMAN,
"Times New Roman" );

hFont = CreateFontIndirect( &fnt );
hDCf = CreateDC( "WINSPOOL", "HP DeskJet 610C Series", NULL, NULL );
SetMapperFlags( hDCf, 1 );
SelectObject( hDCf, hFont );
memset( &di, 0, sizeof( DOCINFO ) );
di.cbSize = sizeof( DOCINFO );
di.lpszDocName = "Test Document";
if ( StartDoc( hDCf, &di ) != SP_ERROR )
{
StartPage( hDCf );
TextOut( hDCf, 10, 10, "Test message", 12);
EndPage( hDCf );
EndDoc( hDCf );
}

Суть проблемы - какой бы размер шрифта(да и его имя) не ставил - на печать это никоем образом не отображается.

Подскажите люди добрые в чем ошибка! Есть у меня подозрение, что сам подход неверен.
1.5K
28 марта 2002 года
sergoo
12 / / 20.07.2000
hFont = CreateFont( 100, 0, 0, 0, FW_NORMAL,
0, 0, 0, ANSI_CHARSET,
OUT_DEFAULT_PRECIS,
CLIP_DEFAULT_PRECIS,
DEFAULT_QUALITY,
DEFAULT_PITCH | FF_ROMAN,
"Times New Roman" );

hFont = CreateFontIndirect( &fnt );

Вот это не очень понятный кусочек.
Что есть fnt?
Если это LOGFONT (как по идее должно быть), то в нем ли ты меняешь размер?
И зачем тогда первый CreateFont?
Если он у тебя в принципе чевой-то печатает, то контекст ты по идее создал правильно, так что больше проблем пока не вижу
1.2K
28 марта 2002 года
soaron
3 / / 20.05.2000
Цитата:


hFont = CreateFontIndirect( &fnt );

Вот это не очень понятный кусочек.
Что есть fnt?



Пардон, этого в коде не было, при копировании ошибся (остатки эксперимента с CreateFontIndirect-ом) - результат одни - что одна функция, что другая, ни их отсутствие не влияют на то, каким шрифтом печатается текст - такое ощущение, что в принтере есть некий шрифт по умолчанию, который и используется, а CreateFont или CreateFontIndirect его не меняют.

1.5K
28 марта 2002 года
sergoo
12 / / 20.07.2000
Ну попробуй получить контекст из стандартного диалога выбора принтера (не создавая его).
А вообще меня это немножко смутило - седня на работе попробую, к вечеру отвечу.
1.5K
28 марта 2002 года
sergoo
12 / / 20.07.2000
Все работает
Правда если убрать SetMappedFlags.
Однако в этом случае конечно размер шрифта не соответствует реальному, но это можно обойти...
Короче ты меня заинтересовал. Давай в начале недельки скину тебе рабочий вариант.
P.S. Правда пока непонятно причем здесь был SetMappedFlags. И почему ты выбрал именно 1?
1.2K
29 марта 2002 года
soaron
3 / / 20.05.2000
буду весьма благодарен.

большая часть кода бралась из примеров, правда не для принтера, а для экрана - там-то все работало без проблем, а вот с принтером у меня не заладилось.

Visual C++ я, в общем-то, только начал изучать
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог