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> 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); p> 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 } } } }