Red de conocimiento informático - Problemas con los teléfonos móviles - Implementación de la función de impresión basada en diálogos en VC++6.0

Implementación de la función de impresión basada en diálogos en VC++6.0

Utilice la base de datos para leer los datos y luego simplemente escriba el código de impresión usted mismo

He realizado una función similar antes y primero leí los datos de la base de datos para completar la lista. El control del cuadro de lista luego llamó a una función que escribí para imprimir todos los datos en el cuadro de lista

Según su mapa actual, se supone que cuando hace clic en el botón Imprimir, el cuadro de lista se ha llenado con datos accediendo a la base de datos, luego simplemente obtenga los datos del cuadro de lista e imprímalos en orden. La siguiente función básicamente puede cumplir con este requisito.

//Imprimir lista

void PrintList(CListCtrl &listCtrl)

{

if(!listCtrl.GetItemCount()) p>

{

AfxMessageBox("No se pueden imprimir datos");

return;

}

// Crear objeto de diálogo Imprimir

CPrintDialog

d1(FALSE,PD_ALLPAGES|PD_ALLPAGES|PD_NOPAGENUMS,NULL

HDC dc1; > DOCINFO di={tamañode(DOCINFO),printName,NULL};

if(d1.DoModal()==IDOK)

{

// Devolver un identificador de Print DC

dc1=d1.GetPrinterDC();

CDC testDC;

testDC.Attach(dc1);

testDC .SetBkMode(TRANSPARENT);

int nListItem = listCtrl.GetItemCount(),//Cuántos elementos deben imprimirse

nListColumn =

( (CHeaderCtrl*)listCtrl .GetHeaderCtrl())->GetItemCount(),//Número de columnas

nPageNeedPrint = nListItem/70 + ((nListItem%70) ? 1 : 0),//Número de páginas a imprimir

nPageCount = 0, //Número de páginas impresas

nCount = 0, //Recuento de elementos impresos

nItemPerPage = 0; /Se debe imprimir cada página Número de entradas

//Ancho del cuadro de lista, utilizado para calcular la proporción

int nHeaderWidth = 0;

for (int k =0;k

{

nHeaderWidth += listCtrl.GetColumnWidth(k);

}

/ / Obtener la orientación horizontal y vertical del dispositivo de impresión Valor de píxel de coordenadas

int xHor = testDC.GetDeviceCaps(HORZRES);

int yVer = testDC.GetDeviceCaps(VERTRES);

int nStepX = xHor/25 , nStepY = yVer/80;

// Iniciar impresión

StartDoc(dc1,&di

while(nPageCount < nPageNeedPrint)

{

// Página de inicio

StartPage(dc1);

////// ///////// ///////////////////////////////////////// ///////

//Específico para la lista de parámetrosCtrl La operación de impresión

//Es similar al texto de salida del dibujo de CC y se puede generar de acuerdo con las necesidades <

/p>

// Fin de la página

EndPage(dc1);

nPageCount++;

}

// Terminar Imprimir trabajo

EndDoc(dc1);

// Eliminar identificador

if(DeleteDC(dc1))

{

return;

}

else

{

//Mensaje de error

EndDoc( dc1);

// Eliminar identificador

if(DeleteDC(dc1))

{

return

}

else

{

//Mensaje de error

}

}

}

}