impresion

02/09/2003 - 21:47 por Pato | Informe spam
Hay alguna funcion de VC para usar en lugar de cout, alguna un poco mas
completa, donde pueda imprimir lineas continuas, etc?. Si teneis algun
ejemplillo agradecido.

Preguntas similare

Leer las respuestas

#1 Pato
03/09/2003 - 07:35 | Informe spam
El codigo me lo toma perfecto pero la impresora no responde, esta
configurada en LPT1, en open no hay que pasar la direccion del puerto? o
solo con el char "LPT1" toma la direccion. No se donde puede andar el
problema. Tengo instalado XP, sera eso?
Alguna idea?
"Mateu Perelló" escribió en el mensaje
news:#x$
Corrigeme si me equivoco pero el cout es para salida por pantalla,
si lo que necesitas es para la impresora prueba con esto ,es una


definicion
de c++ ,se define a la impresora como un archivo de salida.

#include "fstream.h"


ofstream impresora;


impresora.open("LPT1",ios::out);


impresora<<""<<"bla bla bla "<<"";

impresora.close();


donde ""; >>>salto de linea
donde "\f" >>coje una hoja

ja contaras como te ha ido.

A10.


Respuesta Responder a este mensaje
#2 Mateu Perelló
03/09/2003 - 18:48 | Informe spam
Hola en principio no tiene que ver si funciona con el Xp o con Win9x.
Comprueba que la impresora esta en el puerto LPT1, en caso contrario ponla
en el LPT1 o
cambia en la abertura de el nombre del puerto.

Prueba primero cojiendo una hoja



impresora<<"\f";
impresora<<"Hola"<<""<<""<<"Adios";

de todas maneras tendras que hacer pruebas segun sea la impresora ,matricial
,injeccion o laser.
si no te va bien asi dime que tipo de impresora es y te enviare unos codigos
de C++ de manera que
declares la impresora como "Contexto de dispositivo",en la cual se trabaja
sobre la impresora,pero es un poco
mas complicado ja que tienes que crear las fuentes con la cual
imprimira(altura,ancho)etc.


ja contaras como te ha ido.

A10.
Respuesta Responder a este mensaje
#3 Pato
03/09/2003 - 19:55 | Informe spam
Ante todo te agradezco mucho las respuestas, lamento decirte que no pude con
este codigo. Si puedes mandame el otro asi lo hecho a andar
Gracias
"Mateu Perelló" escribió en el mensaje
news:
Hola en principio no tiene que ver si funciona con el Xp o con Win9x.
Comprueba que la impresora esta en el puerto LPT1, en caso contrario ponla
en el LPT1 o
cambia en la abertura de el nombre del puerto.

Prueba primero cojiendo una hoja



impresora<<"\f";
impresora<<"Hola"<<""<<""<<"Adios";

de todas maneras tendras que hacer pruebas segun sea la impresora


,matricial
,injeccion o laser.
si no te va bien asi dime que tipo de impresora es y te enviare unos


codigos
de C++ de manera que
declares la impresora como "Contexto de dispositivo",en la cual se trabaja
sobre la impresora,pero es un poco
mas complicado ja que tienes que crear las fuentes con la cual
imprimira(altura,ancho)etc.


ja contaras como te ha ido.

A10.



Respuesta Responder a este mensaje
#4 Mateu Perelló
04/09/2003 - 00:35 | Informe spam
imprimir()
{
CFont m_fntImpresora; //creamos el objeto de la fuente

LOGFONT lfImpresora; //creamos el logfont de la impresora
//este objeto almacena los
parametros que tendra la fuente




memset(&lfImpresora,0,sizeof(LOGFONT)); //reservamos memoria para la
variable

// inicializamos los datos miembro del LOGFONT

lfImpresora.lfHeight 0;
lfImpresora.lfClipPrecision= CLIP_DEFAULT_PRECIS;
lfImpresora.lfCharSet=ANSI_CHARSET;
lfImpresora.lfPitchAndFamily=FIXED_PITCH|FF_MODERN;
lfImpresora.lfQuality = PROOF_QUALITY;
lfImpresora.lfUnderline=true;
lfImpresora.lfItalic=true;
lfImpresora.lfWeight=2;
strcpy(lfImpresora.lfFaceName,"Courier New");

//inicializamos el onjeto fuente que utilizaara la impresora
m_fntImpresora.CreateFontIndirect(&lfImpresora);


CDC hDC; //creamos el objeto contexto de dispositivo
DOCINFO di; //estructura del documento
DEVMODE dm;

//en los ** siguientes va un char* o CString ,con el nombre que le da
Windows a la impresora
// en mi caso "HP LaserJet 5L PCL"
hDC.CreateDC("WINSPOOL",**,NULL,NULL);

memset(&dm,0,sizeof(dm));
dm.dmSpecVersion=DM_SPECVERSION;
dm.dmSize=sizeof(DEVMODE);
dm.dmFields=DM_ORIENTATION;

hDC.SaveDC();

memset(&di,0,sizeof(DOCINFO));
di.cbSize=sizeof(DOCINFO);
di.lpszDocName="Nombre del documento";

int ModoMapaAnt=SetMapMode(hDC,MM_HIENGLISH); //tipo de mapeo
int nContadorLines=0;
int nContadorPagines=1;

if(hDC.StartDoc(&di)!=SP_ERROR)
{
int ModoMapaAnt=SetMapMode(hDC,MM_HIENGLISH);
hDC.StartPage(); //le dice a la impresora que coja una hoja
hDC.ResetDC(&dm);

for (int c=0;c<nLineasAImprimir;c++)
{
nContadorLines++;
m_lbArticles.GetText(c,szTexte);
hDC.SelectObject(m_fntImpresora);
hDC.TextOut(2,nContadorLines*-200,szTexte); //aqui va a cambiar
segun el tamaño de la fuente
if(nContadorLines>P) //si hay 50 o mas lineas
{
nContadorLines=0;
nContadorPagines++;
hDC.EndPage(); //le dice que saque la hoja
hDC.StartPage();//le dice a la impresora que coja una hoja
}
}
hDC.EndPage(); //le dice que saque la hoja
hDC.EndDoc();//le dice que ya se ha imprimido todo
}
SetMapMode(hDC,ModoMapaAnt);
}
esto es mas o menos como imprimir sobre la vista que despues le dices que
imprima,lo que en lugar de imprimir sobre la vista imprime sobre el
dispositivo que se selecciona (en nuestro caso la impresora),
Segun el nivel que tengas de c++ te puede sonar un poco a chino,en todo caso
si te buscas algun manual avanzado de VC++ te puede ir mejor prueba en
http://www.dcp.com.ar/index.htm que a mi me ha ayudado mucho.
Buena suerte!!

ja contaras como te ha ido.
A10.
Respuesta Responder a este mensaje
#5 Carlos Miguel Carmona
26/09/2003 - 02:39 | Informe spam
epa que mas Mateu, veo que estas bien empapado en programacion. una pregunta
esa parte inicial de imprimir (la facil) sirve para programitas de consola,
esos simples hechos en Dev-C++???, mi impresora es hp840c funcionan con esa
y winXP?


"Mateu Perelló" escribió en el mensaje
news:
imprimir()
{
CFont m_fntImpresora; //creamos el objeto de la fuente

LOGFONT lfImpresora; //creamos el logfont de la impresora
//este objeto almacena los
parametros que tendra la fuente




memset(&lfImpresora,0,sizeof(LOGFONT)); //reservamos memoria para


la
variable

// inicializamos los datos miembro del LOGFONT

lfImpresora.lfHeight 0;
lfImpresora.lfClipPrecision= CLIP_DEFAULT_PRECIS;
lfImpresora.lfCharSet=ANSI_CHARSET;
lfImpresora.lfPitchAndFamily=FIXED_PITCH|FF_MODERN;
lfImpresora.lfQuality = PROOF_QUALITY;
lfImpresora.lfUnderline=true;
lfImpresora.lfItalic=true;
lfImpresora.lfWeight=2;
strcpy(lfImpresora.lfFaceName,"Courier New");

//inicializamos el onjeto fuente que utilizaara la impresora
m_fntImpresora.CreateFontIndirect(&lfImpresora);


CDC hDC; //creamos el objeto contexto de dispositivo
DOCINFO di; //estructura del documento
DEVMODE dm;

//en los ** siguientes va un char* o CString ,con el nombre que le da
Windows a la impresora
// en mi caso "HP LaserJet 5L PCL"
hDC.CreateDC("WINSPOOL",**,NULL,NULL);

memset(&dm,0,sizeof(dm));
dm.dmSpecVersion=DM_SPECVERSION;
dm.dmSize=sizeof(DEVMODE);
dm.dmFields=DM_ORIENTATION;

hDC.SaveDC();

memset(&di,0,sizeof(DOCINFO));
di.cbSize=sizeof(DOCINFO);
di.lpszDocName="Nombre del documento";

int ModoMapaAnt=SetMapMode(hDC,MM_HIENGLISH); //tipo de mapeo
int nContadorLines=0;
int nContadorPagines=1;

if(hDC.StartDoc(&di)!=SP_ERROR)
{
int ModoMapaAnt=SetMapMode(hDC,MM_HIENGLISH);
hDC.StartPage(); //le dice a la impresora que coja una hoja
hDC.ResetDC(&dm);

for (int c=0;c<nLineasAImprimir;c++)
{
nContadorLines++;
m_lbArticles.GetText(c,szTexte);
hDC.SelectObject(m_fntImpresora);
hDC.TextOut(2,nContadorLines*-200,szTexte); //aqui va a cambiar
segun el tamaño de la fuente
if(nContadorLines>P) //si hay 50 o mas lineas
{
nContadorLines=0;
nContadorPagines++;
hDC.EndPage(); //le dice que saque la hoja
hDC.StartPage();//le dice a la impresora que coja una hoja
}
}
hDC.EndPage(); //le dice que saque la hoja
hDC.EndDoc();//le dice que ya se ha imprimido todo
}
SetMapMode(hDC,ModoMapaAnt);
}
esto es mas o menos como imprimir sobre la vista que despues le dices que
imprima,lo que en lugar de imprimir sobre la vista imprime sobre el
dispositivo que se selecciona (en nuestro caso la impresora),
Segun el nivel que tengas de c++ te puede sonar un poco a chino,en todo


caso
si te buscas algun manual avanzado de VC++ te puede ir mejor prueba en
http://www.dcp.com.ar/index.htm que a mi me ha ayudado mucho.
Buena suerte!!

ja contaras como te ha ido.
A10.



email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida