Re[2]: Печать
От: valden Украина http://ua.linkedin.com/in/dvalchuk
Дата: 14.11.03 20:44
Оценка:
Здравствуйте, 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);
}
С уважением Denys Valchuk

IMHO чем больше мнений тем оптимальней выбор варианта... :)
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.