Вопросик: Печать из MFC
От: Roman Ivanshko  
Дата: 01.11.01 14:31
Оценка:
Такой глюк, или может я чего не понял. Есть в ресурсах битмап. Его надо печатать. Печатаю, стандартными средствами: OnDraw(...), IsPrinting и т.д., т.е. просто копирую на контест. НЕ печатается... Т.е. в превью, всё замечательно, а когда на принтер, так чёрненький квадратик... такого же размера. Если у кого есть какие-нить соображения, плиз, просвятите, лучше мылом: Alf@tut.by Буду крайне признателен..
WBR: Alf
Re: Вопросик: Печать из MFC
От: Юнусов Булат Россия  
Дата: 02.11.01 21:23
Оценка:
Здравствуйте Roman Ivanshko, Вы писали:

RI>Такой глюк, или может я чего не понял. Есть в ресурсах битмап. Его надо печатать. Печатаю, стандартными средствами: OnDraw(...), IsPrinting и т.д., т.е. просто копирую на контест. НЕ печатается... Т.е. в превью, всё замечательно, а когда на принтер, так чёрненький квадратик... такого же размера. Если у кого есть какие-нить соображения, плиз, просвятите, лучше мылом: Alf@tut.by Буду крайне признателен..

RI>WBR: Alf

Угу насчет кидания битмапов на DC принтера — энто всегда так. Енто только в KDE что рисуешь то и печатаешь — а тут тебе немножко (не боись — совсем немножко) повозится придется.

По моему личному опыту блиттинг битмапа на принтер когда вызываешь StretchBlt нормально работает только в вин2к — к примеру пример в составе WTL BmpView. Рекомендую

в остальных случаях см код от Microsoft. Drawdib вроде называется — не помню точно. Этот пример еще в VC 1.0 был, есть и сейчас я думаю — поправьте ежели не так

что бы размер был соразмерен размеру страницы принтера надо сначала сделать — надеюсь ты это помнишь

if(pDC->IsPrinting())
{
int cxPage = pDC->GetDeviceCaps(HORZRES);
int cyPage = pDC->GetDeviceCaps(VERTRES);


и прочее и прочее
Re: Вопросик: Печать из MFC
От: migel  
Дата: 03.11.01 14:01
Оценка:
Здравствуйте Roman Ivanshko, Вы писали:

RI>Такой глюк, или может я чего не понял. Есть в ресурсах битмап. Его надо печатать. Печатаю, стандартными средствами: OnDraw(...), IsPrinting и т.д., т.е. просто копирую на контест. НЕ печатается... Т.е. в превью, всё замечательно, а когда на принтер, так чёрненький квадратик... такого же размера. Если у кого есть какие-нить соображения, плиз, просвятите, лучше мылом: Alf@tut.by Буду крайне признателен..

RI>WBR: Alf
Ну да — широко известная фича с принтерами Ж-)
SetDibBitsToDevice()....
Ну и с DIB придеться повозиться — см MSDN
Re[2]: Вопросик: Печать из MFC
От: Roman Ivanshko  
Дата: 05.11.01 10:33
Оценка:
Здравствуйте Юнусов Булат, Вы писали:

ЮБ>Здравствуйте Roman Ivanshko, Вы писали:


RI>>Такой глюк, или может я чего не понял. Есть в ресурсах битмап. Его надо печатать. Печатаю, стандартными средствами: OnDraw(...), IsPrinting и т.д., т.е. просто копирую на контест. НЕ печатается... Т.е. в превью, всё замечательно, а когда на принтер, так чёрненький квадратик... такого же размера. Если у кого есть какие-нить соображения, плиз, просвятите, лучше мылом: Alf@tut.by Буду крайне признателен..

RI>>WBR: Alf

ЮБ>Угу насчет кидания битмапов на DC принтера — энто всегда так. Енто только в KDE что рисуешь то и печатаешь — а тут тебе немножко (не боись — совсем немножко) повозится придется.


ЮБ>По моему личному опыту блиттинг битмапа на принтер когда вызываешь StretchBlt нормально работает только в вин2к — к примеру пример в составе WTL BmpView. Рекомендую


ЮБ>в остальных случаях см код от Microsoft. Drawdib вроде называется — не помню точно. Этот пример еще в VC 1.0 был, есть и сейчас я думаю — поправьте ежели не так


ЮБ>что бы размер был соразмерен размеру страницы принтера надо сначала сделать — надеюсь ты это помнишь


ЮБ> if(pDC->IsPrinting())

ЮБ> {
ЮБ> int cxPage = pDC->GetDeviceCaps(HORZRES);
ЮБ> int cyPage = pDC->GetDeviceCaps(VERTRES);


ЮБ>и прочее и прочее


Ок. Сенкс. Поюзал CDib, из MSDN, заработало. Кстати, не BitBlt не StretchBlt, стандартными путями не работали, у меня XP...
Re[3]: Вопросик: Печать из MFC
От: Юнусов Булат Россия  
Дата: 05.11.01 17:56
Оценка:
Здравствуйте Roman Ivanshko, Вы писали:

RI>Ок. Сенкс. Поюзал CDib, из MSDN, заработало. Кстати, не BitBlt не StretchBlt, стандартными путями не работали, у меня XP...


И в Линолеуме тоже не работает
только в вин2к
почему — сам не знаю :)
легко проверить — в составе WTL пример BmpView кидает битмап на dc принтера через StretchBlt
я специально с откомпилированным файлом все компы на работе обошел — та же история
может кто знает почему так — или верить только собственному опыту?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.