Re: Печать на принтер по умолчанию.
От: SexMachine Украина www.is.svitonline.com/sashko1
Дата: 20.03.07 11:58
Оценка:
Здравствуйте, xjroman, Вы писали:

X>Вызов

X>
X>CString strPrinter = GetDefaultPrinter();
X>CString pBuf = LoadFromFile ( strFile );
X>int     iLen = pBuf.GetLength();
X>RawDataToPrinter ( strPrinter.GetBuffer(10), (unsigned char*)pBuf.GetBuffer(10), iLen );
X>

X>Я так подозреваю, что неправильно формирую lpData который передаю в
X>RawDataToPrinter. Но как надо я так и не нашел.

Не гарантирую что поможет, но мне хдесь очень не нравятся вызовы GetBuffer. Особенно с параметром 10 во-первых после них должен идти вызов метода ReleaseBuffer, во вторых для чего вообще GetBuffer вызывать ? Полагаю для точго чтобы получить указатель на LPTSTR, потому что получить такой указатель простым приведением у вас не получилось. Ну так измените в своем методе

BOOL CGrsprintApp::RawDataToPrinter( LPSTR szPrinterName, LPBYTE lpData, DWORD dwCount )


LPSTR на LPCSTR, LPBYTE на const LPBYTE -они ведь не должны меняться внутри этого метода.

и перепишите вызов так:
BOOL CGrsprintApp::RawDataToPrinter( LPCSTR szPrinterName, const LPBYTE lpData, DWORD dwCount )
//...
RawDataToPrinter ( strPrinter, (const unsigned char*)(LPCTSTR)pBuf, iLen );
У кого-то варит голова, у кого-то — желудок...
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.