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] mise en page d'une impression


Sujet :

MFC

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Membre confirm�
    Avatar de Alice9
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    124
    D�tails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyr�n�es)

    Informations forums :
    Inscription : Mai 2004
    Messages : 124
    Par d�faut [MFC] mise en page d'une impression
    Bonjour,

    Dans une application de type WordPad, je tente de permettre � l'utilisateur de pouvoir r�gler le setup de l'imprimante et des pages.

    Pour cela, je fais appel � la classe CPageSetupDialog.

    Aussi quand l'utilisateur clic sur Fichier/Print Setup ....
    je fais appel � la fonction suivante :
    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
    void CEditPvApp::OnFilePrintSetup() 
    {
    	// TODO: Add your command handler code here
     
       CPageSetupDialog psd( PSD_INHUNDREDTHSOFMILLIMETERS | PSD_MARGINS,
    							AfxGetApp()->GetMainWnd());
     
       // Initialize margins
       // margeTop à margeBottom : variables de la classe principale
       psd.m_psd.rtMargin.top = margeTop ;
       psd.m_psd.rtMargin.left = margeLeft ;
       psd.m_psd.rtMargin.right = margeRight ;
       psd.m_psd.rtMargin.bottom = margeBottom ;
     
       if( IDOK == psd.DoModal() ) 
       {
    	  // Propagate changes to the app
          AfxGetApp()->SelectPrinter(psd.m_psd.hDevNames, psd.m_psd.hDevMode);
     
    	  // mémorisation des marges saisies par l'utilisateur
    	  margeTop = psd.m_psd.rtMargin.top ;
    	  margeLeft = psd.m_psd.rtMargin.left ;
    	  margeRight = psd.m_psd.rtMargin.right ;
    	  margeBottom = psd.m_psd.rtMargin.bottom ;	 
     
       }
       else
          TRACE("CommDlgExtendedError returned error %d from CPageSetupDialog::DoModal().\n",
             (int)CommDlgExtendedError() );
     
    }
    1- traitement des marges :
    Comme je le souhaitai, j'obtiens bien une bo�te de dialogue me permettant de g�rer les options telles que marges et orientation papier (+ imprimante bien sur).
    Quand la fonction est finie et que je lance soit une impression soit une pr�visualisation je me rend compte que les marges ne sont pas prises en compte... Mais par contre on tient bien compte de l'orientation choisie.

    -> Auriez vous une id�e sur le probl�me ?

    2- m�morisation de l'orientation papier choisie par l'utilisateur
    Autre disfonctionnement, quand je rentre dans cette bo�te de dialogue c'est l'orientation portrait qui est choisie. Si je s�lectionne l'orientation paysage pui que je sors et que je rerentre dans la bo�te, c'est toujours l'orientation portrait qui est s�lectionn�e.

    -> comment puis je initialiser la s�lection sur la derni�re orientation s�lectionn�e par l'utilisateur ?

    (pour les marges, je m�morise leur valeur dans des variables de la classe puis j'initialise la bo�te de dialogue avant de mettre DoModal. Je pensais faire de m�me mais je n'arrive pas � r�cup�rer la variable qui me permettra de conna�tre le choix utilisateur.


    Merci beaucoup de votre aide

    Alice

  2. #2
    Membre confirm�
    Avatar de Alice9
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    124
    D�tails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyr�n�es)

    Informations forums :
    Inscription : Mai 2004
    Messages : 124
    Par d�faut [MFC] - re impression et setup
    pour la 2nd partie de mon probl�me :

    j'ai r�ussi � r�cup�rer la valeur de l'orientation du papier par :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
     
    psd.GetDevMode()->dmOrientation
    sachant que dmOrientation peut prendre soit la valeur DMORIENT_PORTRAIT soit la valeur DMORIENT_LANDSCAPE

    maintenant je recherche comment initialiser la bo�te de setup avec une orientation papier soit portrait soit paysage et non pas par d�faut portrait.

    Voil� si d'ici la prochaine vous auriez des infos � me soumettre je suis preneuse !!!

    Merci

    Alice

  3. #3
    Membre confirm�
    Avatar de Alice9
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    124
    D�tails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyr�n�es)

    Informations forums :
    Inscription : Mai 2004
    Messages : 124
    Par d�faut suite et fin
    Pour la question 1,

    c'est r�solu, la variable psd.m_psd est mise � jour dans doModal.

    Puis il faut passer les r�sultats des marges dans la partie View de l'application et plus pr�cisemment dans la fonction commune � OnDraw et OnPrint :

    On prepareDc

    A +


    Alice

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. D�finir la mise en page d'une impression
    Par jamesleouf dans le forum JSF
    R�ponses: 1
    Dernier message: 13/02/2012, 15h37
  2. Mise en page avec une feuille de style
    Par leroivert dans le forum Balisage (X)HTML et validation W3C
    R�ponses: 6
    Dernier message: 15/11/2005, 11h39
  3. R�ponses: 2
    Dernier message: 20/09/2005, 15h10
  4. probl�me de mise en page d'une zone de liste
    Par audrey_desgres dans le forum Access
    R�ponses: 26
    Dernier message: 24/06/2005, 09h11

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