print sux
2 отговора
142 прегледа
print sux
Значи във MFC имам диалогова програма, това във vc .NET. Компилирам го и под XP си работи без проблеми, но под win98 неще да печата и неще. Някви идеи ?
[линк]
намерих това, но това е решението на същия проблем в c#
HDC hDC;
CDC pDC;
DOCINFO di;
CSize m_DimDraw;
CFont pFont;
LOGFONT log;
::ZeroMemory (&di, sizeof (DOCINFO));
di.cbSize = sizeof (DOCINFO);
di.lpszDocName = "test.";
CPrintDialog *dlgPrint = new CPrintDialog(false,PD_PRINTTOFILE);
if (dlgPrint->DoModal() == IDCANCEL) {
delete dlgPrint;
return;
}
hDC = dlgPrint->GetPrinterDC();
if (pDC.Attach(hDC) == 0) {
delete dlgPrint;
return;
}
pDC.SetMapMode(MM_TEXT);
log.lfHeight = -MulDiv(18,pDC.GetDeviceCaps(LOGPIXELSY),72);
log.lfWidth = 0;
log.lfEscapement = 0;
log.lfOrientation = 0;
log.lfWeight = FW_REGULAR;
log.lfItalic = false;
log.lfUnderline = false;
log.lfStrikeOut = 0;
log.lfCharSet = DEFAULT_CHARSET;
log.lfOutPrecision = OUT_DEFAULT_PRECIS;
log.lfClipPrecision = CLIP_DEFAULT_PRECIS;
log.lfQuality = DEFAULT_QUALITY;
log.lfPitchAndFamily = DEFAULT_PITCH || FF_ROMAN;
strcpy (log.lfFaceName,"Arial");
pFont.CreateFontIndirect(&log);
pDC.SelectObject(&pFont);
if (pDC.StartDoc(&di) == -1) {
delete dlgPrint;
return;
}
m_DimDraw.cx = pDC.GetDeviceCaps(HORZRES);
m_DimDraw.cy = pDC.GetDeviceCaps(VERTRES);
if (pDC.StartPage() == -1) {
delete dlgPrint;
return;
}
GetDeviceCaps(LOGPIXELSY),72));
CString test = "test string.";
CSize size = pDC.GetTextExtent(test);
pDC.TextOut(m_DimDraw.cx/2 - size.cx/2,0,test);
pDC.EndPage();
pDC.EndDoc();
pDC.Detach();
delete dlgPrint;
[линк]
намерих това, но това е решението на същия проблем в c#
HDC hDC;
CDC pDC;
DOCINFO di;
CSize m_DimDraw;
CFont pFont;
LOGFONT log;
::ZeroMemory (&di, sizeof (DOCINFO));
di.cbSize = sizeof (DOCINFO);
di.lpszDocName = "test.";
CPrintDialog *dlgPrint = new CPrintDialog(false,PD_PRINTTOFILE);
if (dlgPrint->DoModal() == IDCANCEL) {
delete dlgPrint;
return;
}
hDC = dlgPrint->GetPrinterDC();
if (pDC.Attach(hDC) == 0) {
delete dlgPrint;
return;
}
pDC.SetMapMode(MM_TEXT);
log.lfHeight = -MulDiv(18,pDC.GetDeviceCaps(LOGPIXELSY),72);
log.lfWidth = 0;
log.lfEscapement = 0;
log.lfOrientation = 0;
log.lfWeight = FW_REGULAR;
log.lfItalic = false;
log.lfUnderline = false;
log.lfStrikeOut = 0;
log.lfCharSet = DEFAULT_CHARSET;
log.lfOutPrecision = OUT_DEFAULT_PRECIS;
log.lfClipPrecision = CLIP_DEFAULT_PRECIS;
log.lfQuality = DEFAULT_QUALITY;
log.lfPitchAndFamily = DEFAULT_PITCH || FF_ROMAN;
strcpy (log.lfFaceName,"Arial");
pFont.CreateFontIndirect(&log);
pDC.SelectObject(&pFont);
if (pDC.StartDoc(&di) == -1) {
delete dlgPrint;
return;
}
m_DimDraw.cx = pDC.GetDeviceCaps(HORZRES);
m_DimDraw.cy = pDC.GetDeviceCaps(VERTRES);
if (pDC.StartPage() == -1) {
delete dlgPrint;
return;
}
GetDeviceCaps(LOGPIXELSY),72));
CString test = "test string.";
CSize size = pDC.GetTextExtent(test);
pDC.TextOut(m_DimDraw.cx/2 - size.cx/2,0,test);
pDC.EndPage();
pDC.EndDoc();
pDC.Detach();
delete dlgPrint;
Re: print sux
В отговор на:под win98 неще да печата и неще
Може би обяснение на "не ще да печата" под формата на "ей тук на ей този ред гръмва" или "ей този указател тук по незнайни причини е NULL" ще улесни разрешаването на проблема?
Аа и да не забравяме частта от въпроса "пробвах Х с такива и такива настройки, след това Y с такива"
--
"Agile is a mindset, not a set of practices, rules, or tools."
Tom Poppendieck