lam_insat
Messages postés3Date d'inscriptionlundi 29 août 2005StatutMembreDernière intervention20 octobre 2006
-
17 août 2006 à 09:38
racpp
Messages postés1909Date d'inscriptionvendredi 18 juin 2004StatutModérateurDernière intervention14 novembre 2014
-
17 août 2006 à 16:38
salut!
je veux bien accéder aux differents paramètres de l'imprimante et jouer dessus!
c'est à dire, charger par exemple les differents formats du papier(A4,A5..............;) dans un combobox et quand je choisis un format ça sera automatiquement pris en considération au niveau de l'imprimante!
j'espère que vous m'avez bien compris!
et j'espère que je trouverais quelqu'un d'entre vous qui peut m'aider! c tres urgent!
merci d'avance!
racpp
Messages postés1909Date d'inscriptionvendredi 18 juin 2004StatutModérateurDernière intervention14 novembre 201417 17 août 2006 à 16:38
Salut,
Tous les paramètres d'initialisation de l'imprimante se trouvent dans la strucure DEVMODE. La fonction DocumentProperties() permet de retrouver ou changer ces paramètres. Pour changer le format du papier, il suffit de modifier le contenu du membre dmPaperSize de la strucure DEVMODE.
Voici un exemple de code que j'utilise pour initialiser l'imprimante sur le mode paysage:
// Obtenir le nom de l'imprimante par défaut:
char buf[255];
ULONG size= 255;
GetDefaultPrinter(buf,&size);
// Ouvrir l'imprimante pour pouvoir appeler DocumentProperties:
HANDLE hPrinter;
OpenPrinter( buf, &hPrinter, 0 );
// Obtenir la taille de la structure DEVMODE de cette imprimante:
DWORD dwRet = DocumentProperties( 0,hPrinter, 0, 0,0, 0 );
//Allouer de la mémoire pour notre structure:
DEVMODE* dvm=(DEVMODE*)GlobalAlloc(GPTR ,dwRet);
// Remplir notre structure avec les paramètres courants de l'imprimate:
dwRet = DocumentProperties( 0,hPrinter,buf, dvm, 0, DM_OUT_BUFFER );
// Modifier la structure:
if(dvm->dmFields & DM_ORIENTATION) dvm->dmOrientation=DMORIENT_LANDSCAPE;
// Appliquer les modifications:
dwRet = DocumentProperties( 0,hPrinter,buf,dvm, dvm, DM_IN_BUFFER | DM_OUT_BUFFER );
// Fermer le handle de l'imprimante:
ClosePrinter( hPrinter );
// Créer le HDC de cette imprimante:
HDC pDC = CreateDC (0,buf, 0, dvm) ;
DOCINFO di;
memset(&di, 0, sizeof(DOCINFO));
di.cbSize = sizeof(DOCINFO);
di.lpszDocName = "nom";
StartDoc(pDC, &di);
StartPage(pDC);
// ...... ici TextOut() ou DrawText() etc....
EndPage(pDC);
EndDoc(pDC);
DeleteDC(pDC);