Трабла вот в чём...
печатаю текст по странице А4 или А5 — соответственно...
Печатаю я печатаю ... — типа всё ок...
И тут решил попробовать на удалённом принтере...
получились грабли
Размер листа типа уменьшился раза в 4

((
Эффект кароче тотже как будто я задал размер бумаги дето А8 -(если такой есть канешна

)
void CPrintWin32::PrintTxt(char* str,long xx,long yy,unsigned long style,long sz,const char * fml)
{
int fnWeight=100;
DWORD m_bItalic=FALSE;
if(style & style_bold)
fnWeight=700;
if(style & style_italic)
m_bItalic=TRUE;
long height = -MulDiv(sz, GetDeviceCaps(m_hPrintDC,LOGPIXELSY), 72);
HFONT m_hFont = CreateFont(height,///height
0,///weight
0,///standart {naklon stroki}
0,///standart {naklon osi bukv}
fnWeight,///bold
m_bItalic,///italic
FALSE,///standart {pod4erk}
FALSE,///standart {pere4erk}
RUSSIAN_CHARSET,//DEFAULT_CHARSET ,
OUT_DEFAULT_PRECIS,///standart
CLIP_DEFAULT_PRECIS,///standart
DRAFT_QUALITY,///standart
DEFAULT_PITCH | FF_MODERN,///standart
LPCTSTR(fml));///name
if (!m_hFont)
{
return ;
}
RECT m_PageRect;
m_PageRect.left =xx;
m_PageRect.top = yy;
m_PageRect.right = GetDeviceCaps (m_hPrintDC, PHYSICALWIDTH) -
GetDeviceCaps (m_hPrintDC, PHYSICALOFFSETX);
m_PageRect.bottom = GetDeviceCaps (m_hPrintDC, PHYSICALHEIGHT) -
GetDeviceCaps (m_hPrintDC, PHYSICALOFFSETY);
HFONT hOldFont = (HFONT)SelectObject(m_hPrintDC, m_hFont);
DrawText(m_hPrintDC,
str,
strlen(str),
&m_PageRect,
DT_LEFT);
SelectObject(m_hPrintDC, hOldFont);
DeleteObject(m_hFont);
}
Это код функции вывода текста...
Здравствуйте, 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);
}
Здравствуйте, Patalog, Вы писали:
P>Здравствуйте, valden, Вы писали:
P>[]
P>Показывай как контекст создаешь (m_hPrintDC).
Кстати!
оказалось что при переходе на другой принтер — та же история

Хоть шрифт остаётся тем же...
Здравствуйте, valden, Вы писали:
[]
А
dmFields кто заполнять будет?
Specifies whether certain members of the DEVMODE structure have been initialized. If a member is initialized, its corresponding bit is set, otherwise the bit is clear.
pDevMode->dmFields |= DM_ORIENTATION | DM_PAPERSIZE;