установка font при печати на принтер
От: viya  
Дата: 26.12.02 10:30
Оценка:
доброе время суток!
......так сказать застряла
нужно изменить размер и style шрифта при выводе на принтер
нашла ChooseFont но там такой хвост структур и всяких параметров и установок
тянется...
может кто опытный знает как это сделать по-проще...
пишите, жду советов
Re: установка font при печати на принтер
От: Patalog Россия  
Дата: 26.12.02 10:56
Оценка:
Здравствуйте, viya, Вы писали:

CHOOSEFONT cf = { 0 };

cf.lStructSize = sizeof(cf);
cf.hDC = your_printer_dc;
cf.Flags = CF_PRINTERFONTS;

LOGFONT ret_font = { 0 };
cf.lpLogFont = &ret_font;

BOOL res = ChooseFont(&cf);
if (res)
{
    HFONT font = CreateFontIndirect(&ret_font);
    _ASSERTE(font);
    
    HFONT old_font = reinterpret_cast<HFONT>(SelectObject(your_printer_dc, font));
    /* print your text here */
    
    SelectObject(your_printer_dc, old_font);

    DeleteObject(font);
}
Почетный кавалер ордена Совка.
http://rsdn.org/tools/member.aspx?id=Patalog
Re: установка font при печати на принтер
От: OLEGus1 Россия  
Дата: 26.12.02 13:53
Оценка:
Здравствуйте, viya, Вы писали:

V>нужно изменить размер и style шрифта при выводе на принтер

V>нашла ChooseFont но там такой хвост структур и всяких параметров и установок
V>тянется...


PRINTDLG  pd;

    memset ((void *) &pd, 0, sizeof(PRINTDLG));
    pd.lStructSize = sizeof(PRINTDLG);
    pd.hwndOwner   = this->GetSafeHwnd();
    pd.Flags       = PD_RETURNDC;
    pd.hInstance   = AfxGetInstanceHandle();
    pd.nMinPage=0;
    pd.nMaxPage=1;

    if ( PrintDlg(&pd)!=IDOK) return ;
    ghdc = pd.hDC;
    if (pd.hDevMode)
        GlobalFree (pd.hDevMode);
    if (pd.hDevNames)
        GlobalFree (pd.hDevNames);

    di.cbSize      = sizeof(DOCINFO);
    di.lpszDocName = "print";
    di.lpszOutput  = NULL;

    CDC dc;
    dc.Attach(ghdc);
    CFont font;
    font.CreatePointFont(100,"Arial");
    CFont *pFont=dc.SelectObject(&font);

    dc.GetClipBox(&rect);
    i=0;xp=400;yp=200;
    
    StartDoc  (ghdc, &di);
    StartPage (ghdc);


Только не забудь, что у принтеров разрешение разное и удалять временные ресурсы
Crescite, nos qui vivimus, multiplicamini
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.