Imprimer un fichier [Résolu]

Messages postés
1537
Date d'inscription
samedi 21 décembre 2002
Dernière intervention
24 mai 2009
- - Dernière réponse : cs_AlexMAN
Messages postés
1537
Date d'inscription
samedi 21 décembre 2002
Dernière intervention
24 mai 2009
- 14 juil. 2004 à 12:10
Bonjour,

Bon voila mon pb : je cherche a imprimer un fichier mais ne trouve aucun exemple fonctionnant sur ce site (mm la source de BruNews ne fonctionne pas :/), donc si kelkun se sent de faire un exemple concret et fonctionnel, jle remercie d'avance !

++

Alhexman
Afficher la suite 

Votre réponse

4 réponses

Meilleure réponse
Messages postés
69
Date d'inscription
samedi 6 septembre 2003
Dernière intervention
19 octobre 2005
3
Merci
PRINTDLG pd;

memset( &pd, 0, sizeof( pd ) );

pd.lStructSize = sizeof( pd );

/*
Si tu veux voir la dialogue de mise en page standard de windows alors enleve "PD_RETURNDEFAULT"

*/
pd.Flags = PD_RETURNDEFAULT | PD_RETURNDC;

if( !PrintDlg( &pd ) )
{
MessageBox( NULL, "PrintDlg( &pd )", "Erreur", MB_OK | MB_ICONERROR );
return -1;
}

DOCINFO di;
HDC hPrinter = pd.hDC;

// init
memset( &di, 0, sizeof( di ) );
di.cbSize = sizeof( di );
StartDoc( hPrinter, &di );
//commencer a imprimer la page
StartPage( hPrinter );

//pour couleur de texte
SetTextColor( hPrinter, 0x0000FF );

//printer Hello, World
TextOut( hPrinter, 100, 100, "Salut!", 7);

EndPage( hPrinter );

EndDoc( hPrinter );
DeleteDC( hPrinter );


J'espere que ça t'aide!

cout << "Salut je suis un debutant" << endl;
cout << ":)";

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 98 internautes ce mois-ci

Commenter la réponse de scolinks
Messages postés
936
Date d'inscription
dimanche 1 avril 2001
Dernière intervention
9 janvier 2012
0
Merci
Explique donc tes erreurs...

@+
Arnotic,
Admin CS, MVP Visual C++
Commenter la réponse de cs_Arnotic
Messages postés
1537
Date d'inscription
samedi 21 décembre 2002
Dernière intervention
24 mai 2009
0
Merci
voila les fonctions fautives ! :

void PrintFile(HWND hwnd)
{
BOOL print = 0;
DOCINFO di;
RECT rect;
HDC hdcPrint = ObtPrintName(hwnd);

//GetDeviceCaps() permet d'obtenir des infos sur n'importe quel périphérique grâce à son HDC
//Resolution horizontale de l'imprimante
rect.right = GetDeviceCaps(hdcPrint, HORZRES);
//Resolution verticale de l'imprimante
rect.bottom = GetDeviceCaps(hdcPrint, VERTRES);

//"remplissage" de la structure contenant les infos du document à imprimerdi.cbSize sizeof(DOCINFO); di.lpszDocName szAppName;di.fwType 0; di.lpszDatatype 0; di.lpszOutput = 0;

//Commence un "travail d'impression" ("a jop print" sur msdn)
if (StartDoc(hdcPrint, &di) > 0) {
//Prepare le driver de l'imprimante a accepter les données
if (StartPage(hdcPrint) > 0) {
//PrintScreen(GetDC(hwnd));
TextOut(hdcPrint, rect.right + 20, rect.bottom + 20, "coucou ma puce", 15 * cWidth);
if (EndPage(hdcPrint) > 0) {
print = 1;
}
EndDoc(hdcPrint);
}
}
//Si l'impression a eu lieu
if (print) return;
//Sinon...
MessageBox(hwnd, "Erreur lors de l'impression...", "Erreur", 0);
}

Et la fonction ki imprime sur le hdc de l'imprimante :

void PrintScreen(HDC hdc)
{
RECT rect;
char buf[256];
char *s, *c, *p;int i 0, j 0, y = 0;

s = pszBuffer;
SendMessage(hwndPB, PBM_SETSTEP, (WPARAM)1, 0);
for (i = 0; i < nbrLine; ++i) {
//Pour ne pas monter trop haut
if (iVScrollPos < 0) iVScrollPos = 0;
//Pour ne pas descendre trop bas
else if (iVScrollPos > (nbrLine - 1)) iVScrollPos = nbrLine - 1;
p = buf;
//Change de ligne
y = cHeight * (i - iVScrollPos);
//Recherche de la premiere ocurrence de "\r\n" dans s
c = strstr(s, "\r\n");
//Copie s dans buf jusqu'a c
while (s < c) {if (*s !'\t') *p++ *s;
else { //Si on tombe sur un caractere '\t', on le remplace par 5 espacesfor (j 0; j < 5; ++j) *p++ ' ';
}
s++;
}
//Zero final et + 2 pour sauter "\r\n"
*p = 0; s += 2;
//Ecris la ligne a l'ecran
SetRect(&rect, 0, y, lstrlen(buf) * cWidth, y + cHeight);
DrawText(hdc, buf, lstrlen(buf), &rect, DT_LEFT);
}
}

Mais avec ca, ca marche pa, donc si tu vois une erreur, merci ;)
Commenter la réponse de cs_AlexMAN
Messages postés
1537
Date d'inscription
samedi 21 décembre 2002
Dernière intervention
24 mai 2009
0
Merci
merci pour ta reponse, j'avais trouvé la solution mais merci pour le PD_RETURNDEFAULT, je ne savais pas...jV poster une source ptet aujourd'hui sur l'impression..

Merci

++

Alhexman
Commenter la réponse de cs_AlexMAN

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.