IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

MFC Discussion :

[MFC] Maximiser l'impression d'une view sur feuille A4


Sujet :

MFC

  1. #1
    Rédacteur
    Avatar de bigboomshakala
    Homme Profil pro
    Consultant Web .NET
    Inscrit en
    Avril 2004
    Messages
    2 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant Web .NET
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2004
    Messages : 2 077
    Points : 2 757
    Points
    2 757
    Par défaut [MFC] Maximiser l'impression d'une view sur feuille A4
    bonjour,

    j'ai utilisé ce code pour imprimer ma View. ça marche nickel (merci farscape)...
    ... sauf que sur ma feuille A4, la view imprimé fait 8cmx5.5cm.

    j'ai un peu de mal à décortiquer le code, alors d'ici à ce que je trouve moi-même comment le modifier pour que l'impression se fasse sur toute la page ya de la marge ( ).

    si quelqu'un sait comment faire pour que la taille du bitmap qui va être imprimé soit maximisé en fonction du format d'impression (A4, ...).

    canonisation PRO-mortem pour la sainte personne qui pourra résoudre mon problème!

    merci

    PS : dans le code proposé, ça sert à quoi ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    VERIFY (bm.Attach (::LoadImage (::AfxFindResourceHandle(MAKEINTRESOURCE (inBitmapID), RT_BITMAP),
     MAKEINTRESOURCE (inBitmapID), IMAGE_BITMAP, 0, 0,(LR_DEFAULTSIZE | LR_CREATEDIBSECTION))))
    et ça se place où ?
    est-ce parce que je n'ai pas mis ça que le bitmap imprimé est tout petit?

    PS2 : En même temps (j'abuse un peu), comment fait-on pour que l'impression soit en mode paysage par défaut?

    Remarque : Selon la qualité de l'impression, le bitmap change de taille (petit en brouillon, et très très petit en qualité optimal). KEZAKO ?

  2. #2
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Points : 17 323
    Points
    17 323
    Par défaut
    salut,
    pour le bitmap regarde ça:
    http://www.developpez.net/forums/vie...249668#1249668

  3. #3
    Rédacteur
    Avatar de bigboomshakala
    Homme Profil pro
    Consultant Web .NET
    Inscrit en
    Avril 2004
    Messages
    2 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant Web .NET
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2004
    Messages : 2 077
    Points : 2 757
    Points
    2 757
    Par défaut
    bonjour,

    ouloulou dur dur, mais après quelques tests ce n'est pas au niveau de la surface d'impression ou du rectangle d'impression que vient le problème, mais au niveau de la taille du bitmap lui-même (d'après moi).

    si j'augmente la taille du bitmap sur la page d'impression, je remarque que la résolution du bitmap est très faible (on ne lit pas ce qu'il y a marqué dessus).

    je m'arrache les cheveux avec ce truc

  4. #4
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Points : 17 323
    Points
    17 323
    Par défaut
    salut, c'est quoi la fenetre que tu imprimes ?

  5. #5
    Rédacteur
    Avatar de bigboomshakala
    Homme Profil pro
    Consultant Web .NET
    Inscrit en
    Avril 2004
    Messages
    2 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant Web .NET
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2004
    Messages : 2 077
    Points : 2 757
    Points
    2 757
    Par défaut
    salut,

    ce que j'essaies d'imprimer, c'est le 1er onglet (feuille de match) de mon projet.

    ce que j'obtiens à l'impression c'est un petit bitmap de faible qualité (ici agrandi en changeant la résolution à l'impression - 150dpi - pdffactory (émulateur d'imprimante))

  6. #6
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Points : 17 323
    Points
    17 323
    Par défaut
    bizarre j'ai fais des impressions de fenetre selon ce procédé c'est pas aussi deformé .
    la j'ai pas ton proj sous la main ,je ferais un essai ce soir (sauf si tu me le remail ) .

  7. #7
    Rédacteur
    Avatar de bigboomshakala
    Homme Profil pro
    Consultant Web .NET
    Inscrit en
    Avril 2004
    Messages
    2 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant Web .NET
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2004
    Messages : 2 077
    Points : 2 757
    Points
    2 757
    Par défaut
    remail

    (un grand merci pour prendre sur ton temps pour m'aider)

  8. #8
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Points : 17 323
    Points
    17 323
    Par défaut
    salut,
    voila optmisation en edition en paysage avec un coef de d'etirement calculé a partir de la hauteur du bitmap.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
     
    void CCOACH_equipeView::PrintBmp(CBitmap *pBmp)
    {
        CDC             dc;
        CPrintDialog    printDlg(FALSE);
     
        // selection de l'imprimante.
        if (printDlg.DoModal() == IDCANCEL)   return;
     
    	DEVMODE FAR *pDevMode=(DEVMODE FAR *)::GlobalLock(printDlg.GetDevMode()); 
     
         // set orientation to landscape 
         pDevMode->dmOrientation=DMORIENT_LANDSCAPE; 
         ::GlobalUnlock(printDlg.GetDevMode()); 
     
    	HDC hdc =printDlg.CreatePrinterDC();
     
        //dc.Attach(printDlg.GetPrinterDC()); sinon le mode paysage ne fonctionne pas 
     
    	dc.Attach(hdc);
        dc.m_bPrinting = TRUE; // dc d'impression.
     
        // titre du document = titre application
        CString strTitle;    
        strTitle.LoadString(AFX_IDS_APP_TITLE); 
     
        DOCINFO di;
        ::ZeroMemory (&di, sizeof (DOCINFO));
     
        di.cbSize = sizeof (DOCINFO);    
        di.lpszDocName = strTitle;
     
        // debut d'impression
        if(dc.StartDoc( &di ))
        {      
            // debut page
            dc.StartPage();
     
            // surface d'impression
            CRect rectDraw;
            rectDraw.SetRect(0, 0,
                dc.GetDeviceCaps(HORZRES),
                dc.GetDeviceCaps(VERTRES));
     
            // infos bitmap
            BITMAP bmpInfo;
            pBmp->GetBitmap(&bmpInfo);
     
            // creation d'un objet CPictureHolder pour avoir un dib.
            CPictureHolder picture;
            picture.CreateFromBitmap(pBmp);
     
    		// rectangle d'impression		
    		int ncoefy=(rectDraw.Height()/bmpInfo.bmHeight);
     
            // centrer l'image sur la feuille
            int nX = rectDraw.left + (rectDraw.Width() - (bmpInfo.bmWidth*ncoefy)) / 2;
            int nY = rectDraw.top + (rectDraw.Height() - (bmpInfo.bmHeight*ncoefy)) / 2;
     
            CRect rect;		
    		rect.SetRect(CPoint(nX,nY),CPoint(nX+(bmpInfo.bmWidth*ncoefy),nY+(bmpInfo.bmHeight*ncoefy)));
     
            // affichage final
            picture.Render(&dc,rect,rect);
     
            dc.EndPage(); // fin de page
            dc.EndDoc();  // fin du document
        }    
        else dc.AbortDoc(); // erreur d'impression
        dc.Detach();        // liberation dc d'impression.
    	DeleteObject(hdc);
     
    }
    test fait sur une laser c'est propre !

  9. #9
    Rédacteur
    Avatar de bigboomshakala
    Homme Profil pro
    Consultant Web .NET
    Inscrit en
    Avril 2004
    Messages
    2 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant Web .NET
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2004
    Messages : 2 077
    Points : 2 757
    Points
    2 757
    Par défaut


    arf! un grand merci à toi.
    je vais m'atteler à comprendre comment fonctionne l'impression.
    il ne pas pas que je me comporte en parasite , faut que j'apprenne par l'exemple.

    merci encore. je vais mieux dormir cette nuit (mieux et plus)
    ( quand je blok sur kekchoz, j'ai tendance à y consacrer tout mon temps)

  10. #10
    Rédacteur
    Avatar de bigboomshakala
    Homme Profil pro
    Consultant Web .NET
    Inscrit en
    Avril 2004
    Messages
    2 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant Web .NET
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2004
    Messages : 2 077
    Points : 2 757
    Points
    2 757
    Par défaut
    oh! juste une question. sais-tu pourquoi l'impression était bonne avec ce code quand tu l'employais alors qu'avec mon projet on obtient une vignette?

  11. #11
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Points : 17 323
    Points
    17 323
    Par défaut
    parceque le bitmap n'etait pas etiré voir le calcul avec setrect ,
    il etait juste centré sur la feuille ,
    je vais modifier le post dans la faq pour proposer cette version du cadrage

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. CSS d'impression : Séparer une forme sur plusieurs pages
    Par the5et dans le forum Mise en page CSS
    Réponses: 3
    Dernier message: 04/05/2014, 09h53
  2. [VB6] position de l'impression d'une form sur une feuille
    Par cisnake dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 22/05/2006, 01h06
  3. impression d'une recherche sur formulaire
    Par lucie31 dans le forum Access
    Réponses: 4
    Dernier message: 25/04/2006, 15h24
  4. Réponses: 2
    Dernier message: 10/06/2002, 11h03

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo