Intialisation d'une imprimante

Signaler
Messages postés
3
Date d'inscription
lundi 29 août 2005
Statut
Membre
Dernière intervention
20 octobre 2006
-
Messages postés
1910
Date d'inscription
vendredi 18 juin 2004
Statut
Modérateur
Dernière intervention
14 novembre 2014
-
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!

1 réponse

Messages postés
1910
Date d'inscription
vendredi 18 juin 2004
Statut
Modérateur
Dernière intervention
14 novembre 2014
13
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);

Tu modifierars lègèrement ce code pour mettre le format de papier dans le membre dmPaperSize . Pour tous les détails, regarde ces liens MSDN:
=/library/en-us/gdi/prntspol_7k1f.asp http://msdn.microsoft.com/library/default.asp?url=/library/en-us/gdi/prntspol_7k1f.asp
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/gdi/prntspol_8nle.asp