Intialisation d'une imprimante

lam_insat Messages postés 3 Date d'inscription lundi 29 août 2005 Statut Membre Dernière intervention 20 octobre 2006 - 17 août 2006 à 09:38
racpp Messages postés 1909 Date d'inscription vendredi 18 juin 2004 Statut Modérateur Dernière intervention 14 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!

1 réponse

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

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
0
Rejoignez-nous