C/Visual C - PrintPreview OK, pero no imprime correctamente

 
Vista:

PrintPreview OK, pero no imprime correctamente

Publicado por Nelek (816 intervenciones) el 10/04/2007 12:28:19
Hola,

estoy usando este codigo para imprimir desde mi proyecto.

BOOL CFPSView::OnPreparePrinting(CPrintInfo* pInfo)
{
pInfo->m_pPD->m_pd.Flags |= PD_NOPAGENUMS;
pInfo->m_pPD->m_pd.Flags |= PD_NOSELECTION;
pInfo->m_pPD->m_pd.Flags |= PD_HIDEPRINTTOFILE;
pInfo->SetMaxPage (1);

return DoPreparePrinting(pInfo);
}

y

void CFPSView::OnPrint(CDC* pDC, CPrintInfo* pInfo)
{
CFPSDoc* pDoc = GetDocument ();
ASSERT_VALID (pDoc);
pDC->SetMapMode (MM_LOMETRIC);
CBitmap bmNormIn, bmNormOut, bmNormReg;
CPoint cpFromPoint, cpToPoint;
CFont fontLabels; fontLabels.CreatePointFont (80, "MS Sans Serif", pDC);

CDC dcNormMem;
dcNormMem.CreateCompatibleDC (pDC);
CFont* fontOld = pDC->SelectObject (&fontLabels);
pDC->SetBkMode (TRANSPARENT);

if (bmNormIn.m_hObject != NULL)
bmNormIn.DeleteObject();

bmNormIn.LoadBitmap (IDB_NORMIN);
CBitmap* pbmEmpty = dcNormMem.SelectObject(&bmNormIn);
for (int nIn = 0; nIn < pDoc->m_cmlInputSet.GetCount (); nIn++)
{
pDC->StretchBlt(
2 * pDoc->m_cmlInputSet[nIn].m_cpInCoord.x,
-2 * pDoc->m_cmlInputSet[nIn].m_cpInCoord.y,
2 * SIGWIDTH,
-2 * SIGHEIGHT,
&dcNormMem,
0,
0,
SIGWIDTH,
SIGHEIGHT,
SRCCOPY
);
pDC->TextOut(
2 * pDoc->m_cmlInputSet[nIn].m_cpInCoord.x,
-2 * pDoc->m_cmlInputSet[nIn].m_cpInCoord.y + (-2 * SIGHEIGHT),
pDoc->m_cmlInputSet[nIn].m_szInName
);
}
//... mas cosas
}

La vista previa me la crea perfectamente (tamanyos, posiciones, letras, lineas de conexion... todo), pero sin embargo cuando lo mando imprimir a la impresora me sale TODO MENOS LOS BITMAP que solo me sale un puntito en el vertice de arriba a la izquierda (el punto donde dice sus coordenadas). Lo mejor de todo es que en una prueba que hice, comente el contenido del PreparePrinting y me funciono bien (solo dos veces) y luego volvio a lo de siempre (el puntito en lugar del bitmap entero).

Alguien me puede decir que pasa? Porque la verdad es que no lo entiendo. Lo que hago con "TextOut (...), LineTo (...)" y metodos de ese estilo funciona siempre, pero la carga de los bitmaps... como que no y me tiene bastante mosqueado.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:PrintPreview OK, pero no imprime correctamente

Publicado por Nelek (816 intervenciones) el 10/04/2007 16:37:24
Parece que he encontrado una solucion.

Despues de mirar por muchos sitios he probado una cosa que vi en un ejemplo. Por ahora parece que la cosa funciona.

CBitmap bmNormIn, bmNormOut, bmNormReg;

bmNormIn.CreateCompatibleBitmap (pDC, 2 * SIGWIDTH, -2 * SIGHEIGHT);
bmNormOut.CreateCompatibleBitmap (pDC, 2 * SIGWIDTH, -2 * SIGHEIGHT);
bmNormReg.CreateCompatibleBitmap (pDC, 2 * REGWIDTH, -2 * REGHEIGHT);

Lo he probado un par de veces en la impresora por defecto de mi oficina, en otra de otra oficina, en un plotter y esta vez ha impreso bien siempre.

De todas maneras, acepto cualquier consejo/mejora que se de sobras que mi codigo no es lo mas correcto (posiblemente ni siga el estandard).

Gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar