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

  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 Impression personnalisée
    Bonjour,

    J'ai déjà fait pas mal de choses pour créer une boîte d'impression personnalisée.
    But : imprimer plusieurs images du disque dur (choix du nombre d'images et impression des images choisies)
    Il faudrait alors pouvoir choisir combien mettre d'images par page, leur disposition, leur taille, etc.

    **J'ai récupéré la boîte de ressources standard 1538 que j'ai modifiée un peu (Boutons radio "Toutes les images" ou je garde les champs standards "de n°xx à n°xx") et je lui ai associé une classe CMyPrintDlg dérivée de CPrintDialog

    **J'ai OnPreparePrinting(CPrintInfo* pInfo) qui ouvre cette boîte et initialise des éléments de champs de la boîte standard

    **OnPrint(CDC* pDC, CPrintInfo* pInfo) qui fait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if(pInfo)
    		m_rcPrintRect = pInfo->m_rectDraw;  //stocke le rectangle d'impression m_rectDraw dans uen variable de la classe
    Et dans OnDraw, j'ai :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    CRect rcClient;
     
    	if(pDC->IsPrinting())
    		rcClient = m_rcPrintRect;
     
    	else
    		GetClientRect(rcClient);
    -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

    A ce stade-là (qui m'a déjà pris une éternité vu mon niveau), voilà ce que ça donne :
    j'ai ma boîte personnalisée et le bouton imprimer imprime l'image à l'écran en petit en haut à gauche de ma feuille.
    L'aperçu avant impression correspond bien à ce que j'obtiens.


    Donc il reste:
    -->Définir les actions de mes boutons ajoutés dans la boîte de dialogue (mais là, comment faire pour agir sur pInfo qu'on ne trouve que dans des fonctions standard de la View comme OnPreparePrinting(CPrintInfo* pInfo)
    -->Où indiquer l'image à imprimer, où faire la boucle? (en imprimant les images demandées à partir de leur emplacement sur le disque dur directement où en les envoyant à la vue par la fonction Load, peut-être plus simple puisque ça utilise déjà le code de la fonction OnDraw).
    -->Où imprimer les images sur la feuille (disposition)?

    Pouvez-vous m'indiquer la marche à suivre ?
    Merci.

  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 regardé ce post dans la faq ?
    http://c.developpez.com/faq/vc/?page...HowToPrintView

    le reglage pInfo est a faire dans OnPreparePrinting,qui est appelé avant l'affichage de la boite de dialogue d'impression.
    donc c'est ici que le reglage des pages doit etre fait.
    OnBeginprinting est appelée apres la fermeture de la boite de dlg d'impression.
    le dessin est a faire dans Ondraw ,la selection du dessin depend de l'image et des paremetres selectionnés ,stockés par exemple dans le document..


  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
    Citation Envoyé par farscape
    tu as regardé ce post dans la faq ?
    http://c.developpez.com/faq/vc/?page...HowToPrintView
    Oui, t'inquiète que j'ai épluché tout ce que j'ai pu trouver/comprendre dans le domaine.
    Le réglage de pInfo est à faire dans OnPreparePrinting d'accord, donc il faut que j'aille chercher dans ma classe CMyPrintDlg les paramètres que j'aurai défini alors, c'est bien ça?


    Citation Envoyé par farscape
    le dessin est a faire dans Ondraw ,la selection du dessin depend de l'image et des paremetres selectionnés ,stockés par exemple dans le document.
    Comment faire pour envoyer à l'écran successivement chaque image pour l'impression? Où je dois faire ma boucle qui charge une image et ensuite qui imprime l'image à l'écran?

    Et dans le cas de plusieurs images, les rectangles d'impression varient aussi à chaque fois, donc en fait je ne vois pas où changer ces paramètres à chaque image imprimée (donc pendant l'impression, après qu'on ait appuyé sur "Print").

    Voilà, voilà, c'est la misère...

  4. #4
    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
    Help, qui pourrait me dire comment faire ou me montrer un exemple?

  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
    S'il vous plaît, au moins est-ce que quelqu'un sait comment je peux imprimer plusieurs images sur une page (on va commencer par une question à la fois car j'ai l'impression que ça décourage tout le monde cette question).

    -->où fait-on la boucle, comment on définit la zone de la feuille dans laquelle on imprime l'image, etc.

  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
    salut,
    tu disposes de la surface d'impression m_rcPrintRect.
    pour chaque bitmap tu dois acquerir les infos de tailles avec GetBitmap.
    tu dessines le bitmap sur une portion de la feuille d'impression en specifiant les coordonnées .
    il n'y a pas de boucle ,la zone de la feuille a imprimer c'est toi qui la determine :
    si tu a decidés de mettre 4 images dans ta feuille tu decoupes la surface d'impression en 4 et tu specifies les coordonnées d'impressions au moment ou tu dessines le bitmap.
    voir cet exemple faq:
    http://c.developpez.com/faq/vc/?page=GDI#StretchBitmap
    en zoomant ou non le bitmap d'origine.
    tout se passe dans StretchBlt ou bitblt.
    http://c.developpez.com/faq/vc/?page=GDI#DrawBitmap
    attention aussi a imprimer un bitmap DIB voir faq:
    http://c.developpez.com/faq/vc/?page...PrintDialgoBox

    sinon le seul livre qui traite bien ce sujet c'est celui de Ivor Horton
    "Visual C++ 6 ".


  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
    Bizarrement, si le premier chiffre n'est pas à 1 (image de départ) dans ma boîte d'impression (EDIT n° 1152), la boite se ferme et on ne passe pas dans OnPrint.
    Si le premier chiffre est à 1, alors je rentre dans OnPrint avec from=1 et to qui vaut la valeur entrée (cf code).
    Pourquoi il veut un "1" dans la première case??

    Sinon, voilà ma fonction OnPrint qui est sensée imprimer plusieurs images les unes en-dessous des autres :

    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
    void CMyProjectView::OnPrint(CDC* pDC, CPrintInfo* pInfo)
    {
    	CImage ImgPrint;
    	UINT i;
    	UINT from = pInfo->GetFromPage();
    	UINT to = pInfo->GetToPage();
    	int PrintPosX=0, PrintPosY=0;
    m_rcPrintRect = pInfo->m_rectDraw;
     
    	for(i=from; i<to+1; i++)
    	{
    		CString s = "C:\\Image.bmp"; //après je mettrai des images diférentes à chaque itération
    		ImgPrint.Load(s);
    		int width = ImgPrint.GetWidth(); //1280
    		int height = ImgPrint.GetHeight(); //960
    		int zoom_factor = 1; //pour l'instant
    		PrintPosY = (i-from)*(height + 10); //pour mettre l'image suivante en-dessous de la dernière
    		ImgPrint.StretchBlt(pDC->m_hDC,0,0, width, height, PrintPosX, PrintPosY, zoom_factor*width, zoom_factor*height, SRCCOPY);
    		ImgPrint.Destroy();
    CView::OnPrint(pDC, pInfo);
    	}
    }
    Tout ce que j'ai, c'est une petite image dans le coin en haut à gauche (pourquoi aussi petite, et pourquoi une seule image alors que j'ai mis 2 et que je passe effectivement 2 fois dans la boucle)

  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,
    tu as une petite image c'est normal ,regarde la surface de ton rectangle d'impression en pixel et compare les dimensions avec ton bitmap.
    sinon pas de secret verifie tes calculs ...
    PrintPosY ne tient pas compte de l'image precedente..
    moi j'aurais incrementé au fur et a mesure la hauteur .

  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
    Citation Envoyé par farscape
    tu as une petite image c'est normal ,regarde la surface de ton rectangle d'impression en pixel et compare les dimensions avec ton bitmap.
    sinon pas de secret verifie tes calculs ...
    PrintPosY ne tient pas compte de l'image precedente..
    moi j'aurais incrementé au fur et a mesure la hauteur .
    Ben non, m_rcPrintRect a pour coordonnées :
    top=0;
    bottom=6799;
    left=0;
    right=4657;
    Donc c'est toute la page ça en fait, bien plus grand que 1280*960.

    PrintPosY dépend de i :
    première image PrintPosY=(1-1)*(960 + 10) = 0;
    deuxième image PrintPosY = (2-1)*(960 + 10) = 970; (donc 10 plus bas que la dernière image), etc.


    Pourtant, c'est pas bon!

  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
    bon je viens de relire ton code :
    Citation Envoyé par MSDN
    BOOL StretchBlt( int x, int y, int nWidth, int nHeight, CDC* pSrcDC, int xSrc, int ySrc, int nSrcWidth, int nSrcHeight, DWORD dwRop );

    Return Value

    Nonzero if the bitmap is drawn; otherwise 0.

    Parameters
    x
    Specifies the x-coordinate (in logical units) of the upper-left corner of the destination rectangle.
    y
    Specifies the y-coordinate (in logical units) of the upper-left corner of the destination rectangle.
    ...
    toi tu as mis 0,0 tu t'es trompe de sens sur le source/destination


  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
    Cool, j'avance, j'ai mes 2 images les unes en-dessous des autres.

    Je me serais attendu à ce qu'elles soient imprimé dans une taille plus grande vu les dimensions mais bon, je vais jouer sur le zoom_factor pour ça.

    Sinon, reste les problèmes de la boîte standard modifiée :
    Je sais pourquoi ça veut commencer à 1 dans ce que j'appelle "image de départ" : c'est en fait dans la boîte d'origine "page de départ" donc je comprend que ça commence à 1.

    Par contre, impossible d'ajouter une variable dans les zones d'édition que j'ajoute dans cette boîte contrairement aux autres (l'option est grisée).
    Par conséquent, impossible de faire mes "image de départ", "image de fin" puisque je ne peut pas récupérer les données entrées dans ces zones d'édition.

  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
    hum je ne suis pas sur d'avoir bien compris ta phrase en rouge .
    les infos sur les pages sont dispos dans la zone pinfos .
    voir GetMinPage et GetMaxPage.


  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
    hum je ne suis pas sur d'avoir bien compris ta phrase en rouge .
    Laisse tomber, c'était un bug de Visual, j'ai ré-associé une classe à la boîte et c'est bon.

    Bon, la situation commence à s'éclaircir.

    Dernière question (pour l'instant, lol) : comment on fait pour imprimer sur plusieurs pages, imaginons que j'ai choisi 2 images par page et que j'en ai 4.
    Pour l'instant, ma boucle dans OnPrint me permet d'arranger comme je veux mes images dans LA page.
    Le code ci-dessous n'imprime que 4 images sur la même page alors que pourtant j'incrémente pInfo->m_nCurPage.
    Qu'est-ce que je dois faire?

    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
    32
    void CMyProjectView::OnPrint(CDC* pDC, CPrintInfo* pInfo)
    {
    	//écrire ici les détails d'impression souhaités.
    	CImage ImgPrint;
    	int i;
    	int PrintPosX=0, PrintPosY=0;
    	m_rcPrintRect = pInfo->m_rectDraw;
    	int count=0; //compteur d'image avant de passer avant l'image suivante
    	int nb_images_per_page = 2;
     
    	for(i=m_iPrintFrom; i<m_iPrintTo+1; i++)
    	{
    		CString s = "C:\\Image.bmp"; //après je mettrai des images diférentes à chaque itération
    		ImgPrint.Load(s);
    		int width = ImgPrint.GetWidth();
    		int height = ImgPrint.GetHeight();
    		float zoom_factor = 1; //pour l'instant
    		PrintPosY = (int)((i-m_iPrintFrom)*(zoom_factor*height + 10)); //pour mettre l'image suivante en-dessous de la dernière
    		ImgPrint.StretchBlt(pDC->m_hDC,PrintPosX,PrintPosY, (int)(zoom_factor*width), (int)(zoom_factor*height), 0, 0, width, height, SRCCOPY);
    		ImgPrint.Destroy();
    		count++;
    		if (count==nb_images_per_page)
    		{
    			count=0;
    			PrintPosX=PrintPosY=0;
    			pInfo->m_nCurPage = pInfo->m_nCurPage + 1;
    		}
     
    	}
     
    	CView::OnPrint(pDC, pInfo);
    }

  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
    c'est toi en fonction de pInfo->m_nCurPage qui doit decider de ce que tu imprimes.
    dans ton cas tu dois fixer le nombre de pages a 2 .
    et reagir en consequence du numero de page courant pour le dessin.

  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
    OK, vu!

    Dernier problème du jour :
    if(m_iPrintFrom >= m_iPrintTo)
    return;


    J'ai voulu imprimer 4 images avec comme choix 2 images par page.
    C'est effectivement ce qui se produit et quand j'arrive à cette condition, ça devrait s'arrêter puisque m_iPrintFrom=5 et m_iPrintTo=4.
    Oui, mais voilà, un return dans un OnPrint() imprime quand-même des pages blanches (on ne sort pas de cette satanée fonction) (je ne sais pas combien, j'arrête avant heureusement mais un bon paquet!)


    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
    32
    33
    34
    35
    36
    37
    38
    39
    void CMyProjectView::OnPrint(CDC* pDC, CPrintInfo* pInfo)
    {
    	//écrire ici les détails d'impression souhaités.
    	CImage ImgPrint;
    	int i;
    	int PrintPosX=0, PrintPosY=0;
    	m_rcPrintRect = pInfo->m_rectDraw;
    	int count=0; //compteur d'image avant de passer avant l'image suivante
    	int nb_images_per_page = 2;
    	int nb_pages = (int)(m_iPrintTo/nb_images_per_page + 0.5);
    	pInfo->SetMaxPage(nb_pages);
    	int test = pInfo->GetMaxPage();
     
    	if(m_iPrintFrom >= m_iPrintTo)
    		return;
     
    	for(i=m_iPrintFrom; i<m_iPrintTo+1; i++)
    	{
    		CString s = "C:\\Image.bmp"; //après je mettrai des images diférentes à chaque itération
    		ImgPrint.Load(s);
    		int width = ImgPrint.GetWidth();
    		int height = ImgPrint.GetHeight();
    		float zoom_factor = 1; //pour l'instant
    		PrintPosY = (int)((i-m_iPrintFrom)*(zoom_factor*height + 10)); //pour mettre l'image suivante en-dessous de la dernière
    		ImgPrint.StretchBlt(pDC->m_hDC,PrintPosX,PrintPosY, (int)(zoom_factor*width), (int)(zoom_factor*height), 0, 0, width, height, SRCCOPY);
    		ImgPrint.Destroy();
    		count++;
    		if (count==nb_images_per_page)
    		{
    			//pInfo->m_nCurPage; //imprimer le numéro de page
    			count=0;
    			PrintPosX=PrintPosY=0;
    			m_iPrintFrom = i+1;
    			return;			
    		}
    	}
     
    	CView::OnPrint(pDC, pInfo);
    }

    PS:
    J'ai un autre problème : j'ai du créer un Timer (démarré dans OnInitDialog et Arrêté dans le destructeur); et bien si je fais "OK" (donc Print), pas de problème mais si je fais "Annuler", j'ai un Debug Break.

  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
    hum je ne comprends ton pb ,le nombre de page est fixé dans pinfos avec la fonction SetMaxPage.
    mais ça doit etre fait dans OnPreparePrinting et non dans onPrint.
    ton dessin doit tenir compte de la page en cours dispo dans pinfo :m_nCurPage
    sinon la previsu ne fonctionnera pas .

  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
    hum je ne comprends ton pb ,le nombre de page est fixé dans pinfos avec la fonction SetMaxPage.
    mais ça doit etre fait dans OnPreparePrinting et non dans onPrint.
    ton dessin doit tenir compte de la page en cours dispo dans pinfo :m_nCurPage
    sinon la previsu ne fonctionnera pas .
    Je ne peux pas faire ça dans OnPreparePrinting car cette fonction est exécutée avant que la boîte n'apparaisse.
    Or c'est en fonction des champs qui seront remplis dans la boîte que je saurai le nombre de page.

    Comment je gère m_nCurPage parce qu'on passe autant de fois dans OnPrint qu'il y a de pages, donc à chaque passage, je dis entre quelle et quelle image je veux imprimer (programme du dessus).

    Mais j'ai des tas de problèmes à cause des champs perso que je rempli dans la boîte car à chaque fois que la boîte disparaît, la valeur de mes choix aussi ----->problèmes pour la prévisualisation, problème pour le Timer que j'évoquais je ne sais pas pourquoi, etc.

  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
    re,
    erreur de ma part :
    Citation Envoyé par farscape
    OnBeginprinting est appelée apres la fermeture de la boite de dlg d'impression.
    c''est donc ici que tu dois regler l'ensemble des parametres, dans onprint c'est trop tard.


  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
    Tu as raison; je vois comment organiser les choses maintenant.

    Alors un autre question maintenant :

    QUESTION:

    m_rcPrintRect = pInfo->m_rectDraw;
    voilà les coordonnéesde ce m_rcPrintRect:
    top=0;
    bottom = 1242272;
    left=-1479858352;
    right=2082437900;


    J'avais bien l'idée d'utiliser : pDC->DPtoLP(&m_rcPrintRect); mais ça n'a rien changé.
    Donc moi j'ai des images 1600*1200 à comparer avec ces coordonnées débiles!!!

    Et alors si je passe en mode Preview, c'est pire:
    top=-842150451;
    bottom = -842150451;
    left=-842150451;
    right=-842150451;

  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
    question a quel moment tu consultes cette info ?
    printInfo.m_rectDraw est positionné juste avant OnPrint .
    la valeur est disponible aussi dans OnPrepareDC.
    de toute facon l'affectation est la suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    printInfo.m_rectDraw.SetRect(0, 0,
    	dcPrint.GetDeviceCaps(HORZRES),
    	dcPrint.GetDeviceCaps(VERTRES));
    	dcPrint.DPtoLP(&printInfo.m_rectDraw);

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 3 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