Здравствуйте, Patalog, Вы писали:
P>Здравствуйте, valden, Вы писали:
P>[]
P>Показывай как контекст создаешь (m_hPrintDC).
CPrintWin32::CPrintWin32(char * docname)
{
PrintSetup();
DOCINFO docInfo;
memset( &docInfo, 0, sizeof(DOCINFO) );
docInfo.cbSize = sizeof(DOCINFO);
docInfo.lpszDocName = (LPCSTR)docname;
docInfo.lpszOutput = NULL;
docInfo.lpszDatatype = NULL;
docInfo.fwType = 0;
if (!StartDoc(m_hPrintDC, &docInfo))
{
return ;
}
}
CPrintWin32::~CPrintWin32()
{
EndDoc(m_hPrintDC);
DeleteDC(m_hPrintDC);
}
void CPrintWin32::PrintSetup()
{
PRINTDLG pdlg;
memset( &pdlg, 0, sizeof( PRINTDLG ) );
pdlg.lStructSize = sizeof( PRINTDLG );
pdlg.Flags = PD_ALLPAGES |
PD_DISABLEPRINTTOFILE |
PD_NOPAGENUMS |
PD_NOSELECTION;
BOOL bResult = FALSE;
if (PrintDlg( &pdlg ))
{
DEVNAMES* pDevNames = (DEVNAMES*)GlobalLock(pdlg.hDevNames);
DEVMODE* pDevMode = (DEVMODE*)GlobalLock(pdlg.hDevMode);
pDevMode->dmSize = sizeof( DEVMODE);
pDevMode->dmOrientation = DMORIENT_PORTRAIT ;
m_hPrintDC = CreateDC((LPCTSTR)pDevNames + pDevNames->wDriverOffset,
(LPCTSTR)pDevNames + pDevNames->wDeviceOffset,
(LPCTSTR)pDevNames + pDevNames->wOutputOffset,
pDevMode);
if (m_hPrintDC)
{
m_k = (pDevMode->dmPaperSize == DMPAPER_A4)?(1.4):(1);
SetMapMode(pdlg.hDC, MM_TEXT);
bResult = TRUE;
}
}
GlobalFree(pdlg.hDevMode);
GlobalFree(pdlg.hDevNames);
}