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 personnalisée


Sujet :

MFC

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    759
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 759
    Par défaut
    Citation Envoyé par farscape
    question a quel moment tu consultes cette info ?
    printInfo.m_rectDraw est positionné juste avant OnPrint .
    Et oui, d'accord vu!
    Effectivement les coordonnées étaient bonnes dans OnPrint mais pas dans OnBeginPrinting où j'en ai besoin.

    J'ai donc rajouté ton code :
    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));
    	pDC->DPtoLP(&(pInfo->m_rectDraw));
    	m_rcPrintRect = pInfo->m_rectDraw;
    Et c'est bon.

    Par contre, la ligne pDC->DPtoLP(&(pInfo->m_rectDraw)); semble ne servir à rien, les coordonnées (justes) restent les mêmes après cette opération.

  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
    cette ligne sert uniquement quand le mapping mode est different de MM_TEXT.

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    759
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 759
    Par défaut
    Dernière question : PROMIS, je m'engage à arrêter sur ce post et à marquer "Résolu".


    J'imprime désormais bien ce que je veux comme je veux.

    En revanche, ce n'est pas exactement ce que j'observe en Preview :

    EXEMPLE:

    J'imprime 2 images en décidant de les répartir sur 2 pages (donc une image par page) et j'ai écrit le numéro de page en bas.
    -->à l'impression, tout va bien (une image sur chacune des 2 pages et les mentions "Page 1/2" et "Page 2/2")

    Mais en Preview, je vois une page qui contient 2 images et la mention "Page 1/1".
    Le Preview n'a donc pas tenu compte du nombre de pages (je vois bien qu'on passe indéfiniment dans OnPrint, comme un OnDraw pour la visualisation habituelle).
    Comment résoudre ça?

  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
    salut,
    affecte le nombre de page a la variable m_nNumPreviewPages
    de la classe CPrintInfo (pinfos).

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    759
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 759
    Par défaut
    Heum, je ne peux pas mettre résolu parce qu'en fait c'est pas vrai

    Je me sers du champ standard qui sert à indiquer la dernière page pour déterminer le nombre de page (puisque dans mon cas on commencera toujours à compter à partir de la page 1).


    Dans OnBeginPrinting (si je fais le test de ToPage et MaxPage dans OnPrint, c'est pas mieux, donc c'est pas une histoire d'enroit cette fois)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    if(pInfo->GetToPage()==pInfo->m_pPD->m_pd.nMaxPage) //l'utilisateur n'a rien entré donc 1 page
    		nb_pages=1;
    	else
    		nb_pages = pInfo->GetToPage();
     
    	pInfo->SetMaxPage(nb_pages);
    	pInfo->m_nNumPreviewPages = nb_pages;
    Si on est en mode IMPRESSION, j'ai bien nb_pages=2;
    Si j'y passe ne mode PREVIEW, j'ai nb_pages=1;


    Mode PREVIEW :
    UINT nb = pInfo->GetToPage(); //65535
    UINT nb2 = pInfo->GetMaxPage(); //65535

    Mais pourquoi ne prend-il pas en compte le 2 que j'ai entré?

  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
    re,
    bon je t'ai dis une betise ,cette variable permet d'indiquer le nombre de page en previsu ecran (1 ou 2).

    alors je reviens au depart ,
    je t'avais dis fixe les pages dans OnPreparePrinting,
    tu m'a dis je peux pas c'est avant la boite d'impression .
    ok alors dans ta view tu dois avoir un code comme suit:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    BOOL CMyProjectView::OnPreparePrinting(CPrintInfo* pInfo)
    {
    	// default preparation
    	return DoPreparePrinting(pInfo);
    }
    transforme ça en :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    BOOL CMyProjectView::OnPreparePrinting(CPrintInfo* pInfo)
    {
    	// default preparation
            BOOL bRet;
    	if((bRet=DoPreparePrinting(pInfo))
            {
                // ici fixe les numeros de pages.
            }
            return bRet;
    }
    note: en general le traitement du calcul du nombre de pages s'effectue avant DopreparePrinting.

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    759
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 759
    Par défaut
    Même problème, ça marche très bien en mode IMPRESSION mais pas en mode PREVIEW où j'ai toujours 1 au retour de GetToPage() :


    Dans OnPreparePrinting :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    // default preparation
    	BOOL bRet;
    	if((bRet=DoPreparePrinting(pInfo)))
    	{
    		UINT nb_pages;
    		if(pInfo->GetToPage()==pInfo->m_pPD->m_pd.nMaxPage) //l'utilisateur n'a rien entré donc 1 page
    			nb_pages=1;
    		else
    			nb_pages = pInfo->GetToPage();
     
    	pInfo->SetMaxPage(nb_pages);
    	pInfo->m_nNumPreviewPages = nb_pages; 
    	}
    	return bRet;
    Rien à faire, le champ GetToPage() est pris en compte avec le bouton OK (impression) mais pas avec celui que j'ai moi-même ajouté dans la boîte en lui donnant l'ID ID_FILE_PRINT_PREVIEW (je le dit au cas où ce soit ça qui pose problème).

  8. #8
    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
    re,
    suite a ma remarque enleve pInfo->m_nNumPreviewPages = nb_pages.
    dans le cas d'une previsu ecran que veux tu faire ?
    parce que tu ne peux pas tester GetToPage comme ça il n'est pas forcement affecté:
    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
     
    BOOL CPreviewView::SetPrintView(CView* pPrintView)
    {
    	ASSERT_VALID(pPrintView);
     
    	m_pPrintView = pPrintView;
     
    	// allocate preview info
    	m_pPreviewInfo = new CPrintInfo;
    	m_pPreviewInfo->m_pPD->SetHelpID(AFX_IDD_PRINTSETUP);
    	m_pPreviewInfo->m_pPD->m_pd.Flags |= PD_PRINTSETUP;
    	m_pPreviewInfo->m_pPD->m_pd.Flags &= ~PD_RETURNDC;
     
    	m_pPreviewInfo->m_bPreview = TRUE;  // signal that this is preview
    	ASSERT(m_pPreviewInfo->m_pPD != NULL);
     
    	m_pPreviewDC = new CPreviewDC;      // must be created before any
    										// possible error returns
     
    	if (!m_pPrintView->OnPreparePrinting(m_pPreviewInfo))
    		return FALSE;
    Ci-dessus le code MFC de la previsu,
    Tu vois bien qu’une instance de CPrintInfo est crée (m_pPreviewInfo)
    et ensuite
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    if (!m_pPrintView->OnPreparePrinting(m_pPreviewInfo))
    est appelé .
    maintenant si tu veux un comportement par defaut dans le cas du printpreview il suffit de tester que m_bPreview == TRUE et de faire l'affection souhaitée.

  9. #9
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    759
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 759
    Par défaut
    Je veux tout simplement voir en prévisualisation la même chose que ce qui va sortir de l'imprimante (qu'est-ce que je gache comme papier depuis le début de la semaine! )

    Normalement, puisque l'impression et la prévisualisation parcourent les mêmes fonctions, ça devrait donner un bon résultat.

    Pour le GetToPage, non, il n'est pas forcément affecté à la base, mais moi je le force à être à 1 s'il ne l'est pas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    UINT nb_pages;
    	if(pInfo->GetToPage()==pInfo->m_pPD->m_pd.nMaxPage) //l'utilisateur n'a rien entré donc 1 page
    		nb_pages=1;
    	else
    		nb_pages = pInfo->GetToPage();
    Et comme je le disais, cela marche très bien en mode IMPRESSION.

    Si je met "en dur" : pInfo->m_nNumPreviewPages = 2;
    je vois 2 pages, mais la deuxième est blanche.

    Je ne vois vraiment pas là...

  10. #10
    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
    laisse pInfo->m_nNumPreviewPages=1.
    trace en debug et pre visu la fonction OnPreparePrinting
    indique les differentes valeurs de :
    pInfo->GetToPage()
    pInfo->m_pPD->m_pd.nMaxPage.
    ce que je ne vois pas dans ton code c'st le calcul de nb de page maxi.
    et l'affectation de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    nb_pages = pInfo->GetToPage();
    dans le cas de pre visu pour moi n'est pas logique.

  11. #11
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    759
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 759
    Par défaut
    Citation Envoyé par farscape
    laisse pInfo->m_nNumPreviewPages=1.
    Oui, c'est juste le nombre de page qu'on voit en mode Preview, on laisse 1

    Citation Envoyé par farscape
    trace en debug et pre visu la fonction OnPreparePrinting
    'comprend pas...

    Citation Envoyé par farscape
    indique les differentes valeurs de :
    pInfo->GetToPage()
    pInfo->m_pPD->m_pd.nMaxPage.
    "indique"? Mais non, je la récupère la valeur de GetToPage en fonction de ce que j'ai entré dans l'Edit de la boîte.
    Si je n'ai rien entré, par défaut c'est m_pd.nMaxPage, soit 6535 (et c'est là que je disais que si on est dans ce cas-là, je met "1")
    Si j'ai entré "2", je doit récupérer "2" (ce qui est bien le cas en Impression mais pas en Preview)

    Citation Envoyé par farscape
    ce que je ne vois pas dans ton code c'st le calcul de nb de page maxi.
    Mais si, une fois que j'ai récupéré nb_pages grâce à GetToPage() normalement , c'est ensuite que je fais pInfo->SetMaxPage(nb_pages);


    Est-ce que je suis clair?

    Sinon j'ai essayé de forcer pInfo->m_pPD->m_pd.nToPage = 2;
    Mais toujours rien de plus : mes images sont toutes réunies sur la même page en prévisualisation (alors qu'elles le sont sur 2 pages en impression).

  12. #12
    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
    si tu lance ton prg en mode trace debug (F5) .
    et met un point d'arret dans la fonction OnPreparePrinting.
    que vaut:
    pInfo->GetToPage()
    :Arrow pInfo->m_pPD->m_pd.nMaxPage.

    ?

  13. #13
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    759
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 759
    Par défaut
    Citation Envoyé par farscape
    si tu lance ton prg en mode trace debug (F5) .
    et met un point d'arret dans la fonction OnPreparePrinting.
    que vaut:
    pInfo->GetToPage()
    :Arrow pInfo->m_pPD->m_pd.nMaxPage.

    ?
    C'est ce que je fais en permanence de faire tourner en mode Debug avec points d'arrêt pour lire les valeurs.
    Et c'est irrémédiablement 6535 (pour les deux valeurs que tu me demandes) et pas 2 comme j'ai demandé en mode Preview

  14. #14
    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
    re,
    on reprend un peu .
    Je refais le point et reprécise certaines choses:
    Il faut comprendre que les chemins en print ou pré-visu ne sont pas tout à fait identiques.
    Chaque tache d'impression (print ou preview) génère un objet CPrintInfo
    Donc pas de mémorisation de valeurs précédentes (je précise au cas ou) .
    Le traitement standard du calcul du nb de pages maxi doit se faire dans la fonction OnPreparePrinting et avant DoPreparePrinting pour proposer une valeur dans le cas d'une édition.
    Dans le cas d'une édition DoPreparePrinting appel la boite de dialogue des imprimantes,
    Pour un pré visu non.
    Donc dans ce contexte tu n'as pas de valeur positionnées par la dialogue.
    pinfos n'a pas de valeurs positionnées (GetTopage etc.) m_pd.nMaxPage non plus .

    pour résumer :
    Dans le contexte d'une pré visu pour ton traitement je ne sais pas ce que tu veux faire.
    Mais il très simple de distinguer dans la méthode OnPreparePrinting le cas d'une édition ou d'un pré visu.
    Il suffit de tester la variable pInfo->m_bPreview et d'agir en conséquence pour l'affectation des pages mini maxi etc..

  15. #15
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    759
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 759
    Par défaut
    Citation Envoyé par farscape
    on reprend un peu .
    C'est laborieux avec moi, hein?

    Rassure-toi, j'avance bien. Maintenant que j'ai fixé les choses là où elles doivent être, voyons un autre problème.
    Auparavant, je dois te dire que je prévisualise bien la première page donc je suis déjà content.

    SUITE:
    Tous mes autres problèmes viennent de la présence simultanée de la boîte d'impression et de la fenêtre de prévisualisation.
    Pour que je vois mes images en prévisualisation, il est nécessaire que la boîte d'impression soit ouverte.

    Autrement dit, si je veux lancer la prévisualisation, il faut que je mette un bouton DANS ma boîte de dialogue (voilà pourquoi je l'ai rajouté).
    Là, si je lance la prévisualisation, comme je le disais précédemment, je vois la première page correctement.
    Dans la fenêtre de prévisualisation, il y a des boutons "Impriimer", "Page suivante", "Page précédente" auxquels je ne peux pas accéder tant que la boîte d'impression est ouverte puisque celle-ci est modale

    Donc si je veux toucher aux boutons de la fenêtre de prévisualisation, je dois faire "Annuler" dans ma boîte d'impression...mais là, je ne peux plus voir les images (le texte de bas de page en revanche est correctement visible).
    Exemple de galère : entre chaque prévisualisation, je dois donc :
    - fermer la boîte d'impression
    - fermer la fenêtre de prévisualisation
    - rouvrir la boîte d'impression
    - remettre mes paramètres

    Sans compter un problème de rafraichissement d'image en prévisualisation : la boîte d'impression efface les images prévisualisées situées dessous (pas le texte).


    Comment gérer ça?

  16. #16
    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,
    lancer une view a partir d'une dialogue modale c'est pas terrible.

    proposition de traitement:
    dans le bouton que tu as implementé pour lancer la previsu :
    stocker toutes les infos necessaires dans un endroit accessible et commun ,
    exemple la classe document.
    fermer la dialogue d'impression (EndDialog(xx)) et
    lancer la commande de previsu:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    EndDialog(IDCANCEL);
    PostMessage(WM_COMMAND,ID_FILE_PRINT_PREVIEW)
    dans le traitement OnPreparePrinting tu dectectes le mode previsu et tu recuperes les infos stockées dans le document pour initialiser la pre visu.

  17. #17
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    759
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 759
    Par défaut
    Citation Envoyé par farscape
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    EndDialog(IDCANCEL);
    PostMessage(WM_COMMAND,ID_FILE_PRINT_PREVIEW)

    La deuxième ligne ne se passe pas bien Debug break dans le fichier viewprnt.cpp à la ligne 118 :
    ASSERT(pInfo->m_pPD->m_pd.hDC != NULL);

    Voilà pourquoi :

    en fait quand la boîte d'impression se lance, on passe dans OnPreparePrinting.
    Voilà la fin du code de celle-ci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    BOOL bRet;
    	if((bRet=DoPreparePrinting(pInfo)))
    		pInfo->SetMaxPage(print.nb_pages);
     
    	return bRet;
    print est une structure dans la classe de ma vue qui contient toutes les informations d'impression.
    Elle est initialisée par OnInitDialog de ma classe CMyPrintDlg dans laquelle on passe postérieurement au premier passage dans OnPreparePrinting (le passage lorsqu'on lance la boîte parce qu'ensuite quand on lance l'impression, on y repasse avec cette fois-ci toute la structure remplie par les paramètres que je définis dans ma boîte).

    Déjà, je tiens à souligner qu'on atteint pas les lignes qui suivent if((bRet=DoPreparePrinting(pInfo))) à l'ouverture; puisque c'est une fonction booléenne, il faudrait peut-être renvoyer quelque chose quand-même (j'ai mis en commentaire return DoPreparePrinting(pInfo);, je le rajoute?). On n'y passe que dans les cas "Imprimer" et "Annuler".

    Et puis sinon on arrive au problème que je disais donc au début : le Debug Break dans viewprnt.cpp

    Voilà...

  18. #18
    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
    pour l'histoire de l'assert le retour de OnPreparePrinting doit renvoyer false c'st le cas ?
    faudrait me montrer plus de code ,parce que j'ai du mal a avoir une vision d'ensemble.

  19. #19
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    759
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 759
    Par défaut
    Citation Envoyé par farscape
    pour l'histoire de l'assert le retour de OnPreparePrinting doit renvoyer false c'st le cas ?
    faudrait me montrer plus de code ,parce que j'ai du mal a avoir une vision d'ensemble.
    Oui, ça renvoit FALSE en cas de Preview, et TRUE en cas d'Impression ou d'Annulation.

    Je te montre le code que tu veux mais je crois avoir tout mis.
    Là, ça plante juste à la ligne PostMessage(WM_COMMAND,ID_FILE_PRINT_PREVIEW) parce que j'ai
    pInfo->m_pPD->m_pd.hDC qui est NULL.

    Tu me diras précisément ce que tu veux comme code en rapport avec ça si t'as encore du courage pour continuer sur la question Lundi.

  20. #20
    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
    Citation Envoyé par stof
    Citation Envoyé par farscape
    pour l'histoire de l'assert le retour de OnPreparePrinting doit renvoyer false c'st le cas ?
    faudrait me montrer plus de code ,parce que j'ai du mal a avoir une vision d'ensemble.
    Oui, ça renvoit FALSE en cas de Preview, et TRUE en cas d'Impression ou d'Annulation.

    Je te montre le code que tu veux mais je crois avoir tout mis.
    Là, ça plante juste à la ligne PostMessage(WM_COMMAND,ID_FILE_PRINT_PREVIEW) parce que j'ai
    pInfo->m_pPD->m_pd.hDC qui est NULL.

    Tu me diras précisément ce que tu veux comme code en rapport avec ça si t'as encore du courage pour continuer sur la question Lundi.
    comme ça retourne false il ne faut pas acceder a m_pPD->m_pd.hDC.
    le probleme est facile a contourner non ?

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 3 PremièrePremière 123 DernièreDernière

Discussions similaires

  1. [PR-2010] Impression Personnalisable Gantt
    Par vnct01 dans le forum Project
    Réponses: 4
    Dernier message: 09/08/2012, 18h13
  2. l'impression personnalisée par MFC
    Par rgimilio dans le forum MFC
    Réponses: 2
    Dernier message: 05/02/2010, 21h31
  3. Bouton d'impression personnalisée
    Par Herman dans le forum IHM
    Réponses: 1
    Dernier message: 03/07/2007, 11h36
  4. impression personnalisée de DIV
    Par nicerico dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 28/03/2007, 11h28

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