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 : Problèmes d'impression...


Sujet :

MFC

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 29
    Par défaut MFC : Problèmes d'impression...
    Bonjour,

    Ca fait plusieurs jours que je galère sur ce problème et je sais plus trop où donner de la tête...

    1) Je dessine un rectangle de dimensions fixes (x, y) dans une CScrollView.

    2) Je lance l'impression de la vue par la méthode conventionnelle (OnPreparePrinting, OnBeginPrinting, OnPrint ...)

    Au final, j'obtiens un résultat différent suivant les imprimantes sur lesquelles j'imprime.
    En effet, mon rectangle ne possède jamais les mêmes dimensions et je comprends pas du tout pourquoi

    En théorie, les propriétés du Printer ne doivent pas avoir une influence sur la taille de l'objet à imprimer ...

    Si vous avez une idée...

    Merci d'avance,
    ++

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 29
    Par défaut
    Pour plus de précisions, voici le code

    Dans ma vue :

    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
     
    //Prepare Printing
    BOOL CMyView::OnPreparePrinting(CPrintInfo* pInfo)
    {
    return DoPreparePrinting(pInfo);
    }
     
    // DoPreparePrinting
    BOOL CMyView::DoPreparePrinting(CPrintInfo* pInfo)
    {
    pInfo->m_nOffsetPage = 0;
    pInfo->SetMaxPage (1);
    return CView::DoPreparePrinting (pInfo);
    }
     
    // Print
    void CMyView::OnPrint( CDC *pDC, CPrintInfo *pInfo )
    {
    pInfo->m_rectDraw.SetRect(0,0,	pDC->GetDeviceCaps(HORZRES),pDC->GetDeviceCaps(VERTRES));
     
    OnDrawImpression( pDC );
    }
     
    void CMyView::OnDrawImpression(CDC* pDC)
    {
    pDC->Rectangle (CRect (0, 0, 500, 500));
    }
    La taille du rectangle est bien fixée, et pourtant il ne "s'imprime" pas pareil, d'une machine à l'autre...

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 11
    Par défaut sa peut t'aider ....
    voila je suis confronter au meme probleme que le tien , c'est en faite la definition de l'imprimante qu'il faut réussir a gérer mais je suis débutant et je n'ai pas réussi a automatiser la chose par contre j'ai un petit bout de code qu'il suffit de placer dans ondrawimpression qui permet de modifier certain parametre. A toi de tester, c'est assez empirique mais sa peu peu etre t'aider
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     cxPage = pDC->GetDeviceCaps ( HORZRES ) ;//va chercher la definition horizontal
      cyPage = pDC->GetDeviceCaps ( VERTRES ) ;;//va chercher la definition verticale
     
      // Permettre la mise à l'échelle de l'affichage (pour l'impression)
      pDC->SetMapMode(MM_ISOTROPIC); // échelle en x indépendante de y
     
      pDC->SetWindowExt(1000, 1000); // Définir la gandeur logique de l'affichage (pour l'impression)
     
      pDC->SetViewportExt(cxPage/valeur?? , cyPage/valeur?? );// Définir la grandeur physique de l'affichage (pour l'impression) en fonction d'une valeur
     
      pDC->SetViewportOrg(0,  0);// Définir le point d'origine de l'affichage (pour l'impression)

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 29
    Par défaut
    J'ai peut-être trouvé le truc...

    Il faut récupérer le rectangle d'impression via le CPrintInfo et calculer un coefficient multiplicateur de redimensionnement en utilisant la méthode HMetric... du pDC.

    Je valide demain...

Discussions similaires

  1. Réponses: 10
    Dernier message: 22/09/2012, 15h11
  2. [MFC] Problème impression avec les MFC
    Par semenzato dans le forum MFC
    Réponses: 2
    Dernier message: 25/01/2007, 16h13
  3. [MFC] Problème d'échelle d'impression
    Par Philippe320 dans le forum MFC
    Réponses: 4
    Dernier message: 04/02/2006, 08h59
  4. [MFC] problème d'éxécution
    Par ben_iap dans le forum MFC
    Réponses: 2
    Dernier message: 15/03/2004, 10h31
  5. Problème d'impression
    Par IngBen dans le forum C++Builder
    Réponses: 7
    Dernier message: 22/05/2002, 11h37

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