Imprimer un fichier [Résolu]

cs_AlexMAN 1537 Messages postés samedi 21 décembre 2002Date d'inscription 24 mai 2009 Dernière intervention - 11 juil. 2004 à 21:39 - Dernière réponse : cs_AlexMAN 1537 Messages postés samedi 21 décembre 2002Date d'inscription 24 mai 2009 Dernière intervention
- 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
scolinks 69 Messages postés samedi 6 septembre 2003Date d'inscription 19 octobre 2005 Dernière intervention - 14 juil. 2004 à 10:25
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 << ":)";

Merci scolinks 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 93 internautes ce mois-ci

Commenter la réponse de scolinks
cs_Arnotic 936 Messages postés dimanche 1 avril 2001Date d'inscription 9 janvier 2012 Dernière intervention - 11 juil. 2004 à 21:48
0
Merci
Explique donc tes erreurs...

@+
Arnotic,
Admin CS, MVP Visual C++
Commenter la réponse de cs_Arnotic
cs_AlexMAN 1537 Messages postés samedi 21 décembre 2002Date d'inscription 24 mai 2009 Dernière intervention - 11 juil. 2004 à 21:52
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
cs_AlexMAN 1537 Messages postés samedi 21 décembre 2002Date d'inscription 24 mai 2009 Dernière intervention - 14 juil. 2004 à 12:10
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.