Здравствуйте, DreamWeaver, Вы писали:
DW>Вывожу картинку на принтер, но она получается уж очень маленькой. Как вообще можно задать ширину и высоту пикселя на бумаге?
//--------------------------------------------
// Для работы с принтером
// устанавливает 1 пиксел равным unit милиметрaм
//--------------------------------------------
void MDC::MPrinter::SetLogicalUnitSize(double unit)
{
if (!IsHandle())
return;
Flg_MM_Mode = TRUE;
dUnit = unit;
//получить размеры устройства в пикселях
int pp_size_x = GetDeviceCaps(m_hDC, HORZRES) — 1;
int pp_size_y = GetDeviceCaps(m_hDC, VERTRES) — 1;
SetRect(&DevRect, 0, 0, pp_size_x, pp_size_y);
//получить размеры устройства в милиметрах
int mm_size_x = GetDeviceCaps(m_hDC, HORZSIZE);
int mm_size_y = GetDeviceCaps(m_hDC, VERTSIZE);
if (!SetWindowExtEx(m_hDC, pp_size_x, pp_size_y, &PrevWinExt) ||
!SetViewportExtEx(m_hDC,(int)(x_fact + 0.5), (int)(y_fact + 0.5), &PrevViewExt) ||
!DPtoLP(m_hDC, (LPPOINT)&DevRect, 2))
{
#ifdef WIN32
DWORD err = ::GetLastError();
TRACE("Set extension error %xl\n", err);
#endif
}
}
DW> При помощи функции PrintDlg можно вернуть кучу разных параметров, а как можно, допустим, заставить принтер печатать в чернобелом режиме? Как поменять ориентацию бумаги? Вся эта инфа возвращается в структуре DEVMODE, а как ее задать?