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 :

imprimer une vue


Sujet :

MFC

  1. #1
    Membre confirmé
    Inscrit en
    Avril 2006
    Messages
    109
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 109
    Par défaut imprimer une vue
    Bonjour,

    J'aimerais savoir comment faire pour imprimer une vue (et non un fichier image bmp).

    Julien.

  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
    Par défaut
    une CFormView ne s'imprime pas ,sauf à utiliser l'impression par un bitmap de la form comme dans la faq (c'est une dialog, mais c'est pareil):
    http://c.developpez.com/faq/vc/?page...PrintDialgoBox
    si c'est une CView, si tu sais la dessiner tu sais l'imprimer :
    http://c.developpez.com/faq/vc/?page...HowToPrintView

  3. #3
    Membre confirmé
    Inscrit en
    Avril 2006
    Messages
    109
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 109
    Par défaut
    C'est une view que je veux imprimer : je la dessine bien avec OnDraw mais lorsque j'utilise la fonction "imprimer" par défaut, Visual C++ m'imprime la view en tout petit et je la voudrais en plein écran.

    En parcourant le forum et la faq, j'ai essayé de modifier les fonctions OnFilePrint et OnBeginPrinting et de rajouter cela

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    pInfo->m_rectDraw.SetRect(0, 0,
    		pDC->GetDeviceCaps(HORZRES),
    		pDC->GetDeviceCaps(VERTRES));
    mais ça ne marche pas

  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
    Par défaut
    ton mapmode est bien MM_TEXT ?

  5. #5
    Membre confirmé
    Inscrit en
    Avril 2006
    Messages
    109
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 109
    Par défaut
    je n'avais pas mis le SetMapMode à MM_TEXT, j'ai donc rajouté

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    pDC->SetMapMode(MM_TEXT);
    dans OnDraw mais ça ne change rien

  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
    Par défaut
    alors si tout est ok ,tu dois te planter dans ton dessin.
    celui-ci ne tient pas compte de la surface disponible...
    sans voir le code on ne peut rien dire de plus.

  7. #7
    Membre confirmé
    Inscrit en
    Avril 2006
    Messages
    109
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 109
    Par défaut
    Pour tenir compte de la surface disponible, j'utilise GetClientRect et ensuite je dessine en utilisant lpRect

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    CRect lpRect;
    this->GetClientRect(lpRect);
     
    // exemple de tracé dans le dessin
    pDC->MoveTo(2*lpRect.right/5,0);
    pDC->LineTo(2*lpRect.right/5,18);
    c'est bien ça qu'il faut faire ?

  8. #8
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    Que vient faire "lp" dans le nom ?
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  9. #9
    Membre confirmé
    Inscrit en
    Avril 2006
    Messages
    109
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 109
    Par défaut
    lpRect c'est le nom de l'objet de type CRect, j'aurais pu l'appeler julienRect ou medinocRect ...

  10. #10
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    Sauf qu'en programmation sous Windows, la convention utilisée dit que "lp" signifie "long pointer" (même si en 32bits, tous les pointeurs sont "longs")...

    Donc, tu peux appeler ça julienRect si tu veux, mais pas lpRect ou pRect...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  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
    Par défaut
    c'est bien ce que je disais, GetClientRect donne la surface de la fenetre client, pas la surface d'impression de l'imprimante...
    il faudra distinguer le cas du dessin à l'ecran et celui de l'edition....

  12. #12
    Membre confirmé
    Inscrit en
    Avril 2006
    Messages
    109
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 109
    Par défaut
    d'accord, et comment peut-on modifier la surface de l'impression de l'imprimante en faisant en sorte qu'elle coincide avec la surface de la fenêtre client ?

  13. #13
    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
    Par défaut
    non ça ne marche pas comme ça;
    c'est toi qui doit adapter ton dessin en fonction de la surface d'impression...

  14. #14
    Membre confirmé
    Inscrit en
    Avril 2006
    Messages
    109
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 109
    Par défaut
    Dans ce cas, il faudrait agrandir énormément la taille de mon dessin et ça ne tiendra pas sur mon petit écran 15 pouces : il faudra utiliser des barres de défilement => CScrollView, or moi j'aimerais que mon dessin tienne entièrement sur mon écran, dans la fenêtre client ...

    peux-tu me donner davantage de détails, je ne vois pas comment faire.

Discussions similaires

  1. [V8] Ajout d'un bouton imprimer dans une vue tree
    Par bizou-nours dans le forum Odoo (ex-OpenERP)
    Réponses: 0
    Dernier message: 10/06/2015, 11h55
  2. Réponses: 2
    Dernier message: 12/12/2014, 23h36
  3. [VB.NET]Comment Imprimer une form
    Par bernard06 dans le forum Windows Forms
    Réponses: 4
    Dernier message: 19/10/2011, 17h43
  4. Export d'une vue avec LEFT JOIN
    Par schnourf dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 22/05/2003, 13h57
  5. Créer une vue pour trier une requete UNION ?
    Par Etienne Bar dans le forum SQL
    Réponses: 3
    Dernier message: 03/01/2003, 20h22

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