Imprimer un fichier

[Résolu]
Signaler
Messages postés
1536
Date d'inscription
samedi 21 décembre 2002
Statut
Membre
Dernière intervention
24 mai 2009
-
Messages postés
1536
Date d'inscription
samedi 21 décembre 2002
Statut
Membre
Dernière intervention
24 mai 2009
-
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

4 réponses

Messages postés
69
Date d'inscription
samedi 6 septembre 2003
Statut
Membre
Dernière intervention
19 octobre 2005
4
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 << ":)";
Messages postés
933
Date d'inscription
dimanche 1 avril 2001
Statut
Modérateur
Dernière intervention
9 janvier 2012
2
Explique donc tes erreurs...

@+
Arnotic,
Admin CS, MVP Visual C++
Messages postés
1536
Date d'inscription
samedi 21 décembre 2002
Statut
Membre
Dernière intervention
24 mai 2009
2
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 ;)
Messages postés
1536
Date d'inscription
samedi 21 décembre 2002
Statut
Membre
Dernière intervention
24 mai 2009
2
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