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 :

CPreviewView


Sujet :

MFC

  1. #1
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Février 2003
    Messages
    91
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 91
    Par défaut CPreviewView
    Existe-t-il un fonction ou variable dans la classe CPreviewView qui permette de changer le mode d'affichage (portait / paysage) à la volée?
    J'ai dérivé la classe CPreviewView et j'ai ajouté un bouton faisant appel à

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    CPrintDialog pd(TRUE);
    AfxGetApp()->DoPrintDialog(&pd);
    de façon à configurer le mode directement dans l'aperçu. Seul problème, l'affichage ne se met pas à jour à moins de sortir de l'aperçu et de revenir.

  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
    salut,
    tu as essayé d'intervenir dans OnPreparePrinting de la view ?

  3. #3
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Février 2003
    Messages
    91
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 91
    Par défaut
    j'arrive à passer la variable du mode d'impression en paysage. Par contre l'affichage n'est pas mis à jour. Si je quitte l'aperçu et que je reviens c'est bon. Ce que je cherche c'est une fonction qui me permette de demander à l'aperçu de se rafraichir sans le quitter et revenir.

  4. #4
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Février 2003
    Messages
    91
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 91
    Par défaut
    ok, j'ai trouvé ce qu'il faut faire pour prendre en compte les modifications:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    	CPrintDialog pd(TRUE);
    	AfxGetApp()->DoPrintDialog(&pd);
     
    	CPrintInfo *pInfo = m_pPreviewInfo;
    	m_pPreviewInfo = NULL;
    	m_dcPrint.Detach();
    	delete pInfo;
    	SetPrintView(m_pPrintView);
    Seul problème, j'ai un memory leak :

    Detected memory leaks!
    Dumping objects ->
    {8656} client block at 0x01C56310, subtype 0, 64 bytes long.
    a CPreviewDC object at $01C56310, 64 bytes long
    Object dump complete.
    Une idée d'où cela peut provenir?

  5. #5
    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
    salut,
    normal SetPrintView alloue un objet CPreviewDC
    je rajouterai:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    CPrintDialog pd(TRUE);
       AfxGetApp()->DoPrintDialog(&pd);
     
       CPrintInfo *pInfo = m_pPreviewInfo;
       m_pPreviewInfo = NULL;
       delete m_pPreviewDC; // rajout
       m_dcPrint.Detach();
       delete pInfo;
       SetPrintView(m_pPrintView);

  6. #6
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Février 2003
    Messages
    91
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 91
    Par défaut
    Super c'est ça !!!
    Merci

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

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