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 :

[Impression] Récupérer la taille de la page


Sujet :

MFC

  1. #1
    Membre régulier Avatar de vanitom
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    327
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 327
    Points : 85
    Points
    85
    Par défaut [Impression] Récupérer la taille de la page
    Bonjour,

    Je suis en train de ma prendre la tête avec l'impression et ça commence à me gonfler. "Je vais bien, tout va bien, ..., Tout va mal"
    Désolé pour ce cri de désespoir.

    Bref, j'ai besoin d'un petit coup de main.

    Je doit créer une impression différente que celle fournit par Microsoft qui imprime bètement la vue.

    J'ai donc besoin de gérer moi même le positionnement de tout mes petites données.

    J'ai créé correctement les trois fonctions fonctions important pour l'impression :
    • OnBeginPrinting ( ... )
    • OnPrint ( ... )
    • OnEndPrinting ( ... )


    J'ai même ajouté les fonctions suivantes pour gérer correctement les préparations :
    • OnPreparePrinting ( ... )
    • OnPrepareDC ( ... )


    Voilà donc tous les petits détails. Et maintenant les trucs un peu bizarre.

    Quand je suis en impression pure, j'ai le membre m_rectDraw de pInfo qui est initialisé avec la taille de page dans laquelle je peux dessiner.
    Par contre, j'ai contaté un truc louche. Voici le contenu de mon Watch :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    pInfo->m_rectDraw.Height ( ) = 788
    pInfo->m_rectDraw.Width  ( ) = 6184209
    Je ne comprend pourquoi j'ai une telle différence entre la Hauteur et la Longueur. Ce qui évidement me complique la vie quand je vais mes calculs de position. Donc si quelqu'un à une explication, je serai bien preneur.


    Et puis si je peux abuser de votre temps, j'ai une autre question.


    Quand je suis en "aperçu avant impression", j'ai le membre m_rectDraw de pInfo qui n'est pas du tout initialisé. Mais comment veulent-ils que je calcule des coordonnées si la taille de la page n'est pas correctement initialisé. Ils sont drôle eux.
    Comment puis-je faire dans ce cas pour connaitre la taille de la page ?



    Merci d'avance à tous

  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,
    Regarde ce post de la faq ,il montre comment imprimer un bitmap à l'écran .
    Tu retrouves les éléments de base pour imprimer sans le modèle d'impression d'un View.

    http://c.developpez.com/faq/vc/?page...PrintDialgoBox

  3. #3
    Membre régulier Avatar de vanitom
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    327
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 327
    Points : 85
    Points
    85
    Par défaut
    Ba en fait sans vouloir être chiant, je ne vois pas du tout en quoi cette question/reponse pourrait m'aider.

    Ba ouais, dans cet exemple on fixe soit même la taille de la page. Alors que dans les procédures MFC, ce n'est pas à nous de la fixer. Elle est donnée en fonction de l'imprimante.
    A moins que la partie suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    rectDraw.SetRect(0, 0,
    dc.GetDeviceCaps(HORZRES),
    dc.GetDeviceCaps(VERTRES));
    permet de récupérer la taille de la page.

  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
    oui c'est bien ça ....
    c'est GetDeviceCaps qui permet de recuperer en pixels la dimension de la feuille.

  5. #5
    Membre régulier Avatar de vanitom
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    327
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 327
    Points : 85
    Points
    85
    Par défaut
    Et pour simplifier les choses, est-ce que je peux faire ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    pInfo->m_rectDraw = rectDraw
    sans que cela engendre des problème important ?

  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
    oui ,
    je ne vois pas quel pb ça engendrerait, c'est une information, aprés tout depend comment on l'utilise..

  7. #7
    Membre régulier Avatar de vanitom
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    327
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 327
    Points : 85
    Points
    85
    Par défaut
    En fait maintenant que j'ai fais la modification, plus rien ne marche.

    Quand j'imprime, j'ai un message box qui me dit
    Impossible de lancer l'impresson
    . Ce message d'erreur vient quand le CView fait le
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    dcPrint.StartDoc(&docInfo) == SP_ERROR
    .

    Quand j'affiche l'aperçu avant impressionn, j'ai une succession d'ASSERT qui ammène à bloquage d'aperçu ( donc de l'application ).Le premier ASSERT se trouve dans la fonction MirrorMappingMode avec la fonction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    VERIFY(::GetViewportExtEx(m_hAttribDC, &m_sizeVpExt));
    .


    Et pourtant dans tous les cas, j'ai bien fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    cd.Detach ( )
    ::DeleteObject ( hdc )
    et surtout je n'ai pas changer le membre m_rectDraw.

    Mais là je ne comprend pas.

  8. #8
    Membre régulier Avatar de vanitom
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    327
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 327
    Points : 85
    Points
    85
    Par défaut
    Bon, j'ai bidouillé un peu mais c'est bon.

    En fait, le truc c'est qu'avant de faire le CreatePrintDC, le pInfo->m_pDC->m_pd.hDC n'était pas NULL. Il a donc fallu que je sauvegarde ce hdc, puis que je fasse le CreatePrinterDC. Et pour finir que je restaure le hdc sauvegardé précédement.

Discussions similaires

  1. comment modifier la taille de la page impression
    Par chekkal dans le forum Débuter
    Réponses: 6
    Dernier message: 06/11/2013, 11h33
  2. CSS Impression -> Ajuster la taille de la page
    Par ferensy dans le forum Mise en page CSS
    Réponses: 5
    Dernier message: 25/02/2008, 17h39
  3. Récupérer la taille d'une page HTML
    Par Fullm3tal dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 03/01/2008, 17h58
  4. [CSS]impression, adapter à la taille de la page
    Par manaboko dans le forum Mise en page CSS
    Réponses: 4
    Dernier message: 12/09/2006, 16h14
  5. Comment modifier la taille de la page d'impression ?
    Par edam dans le forum API, COM et SDKs
    Réponses: 2
    Dernier message: 03/05/2005, 15h51

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