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] imprimer une dialogue contenant un graphique


Sujet :

MFC

  1. #1
    Membre éclairé
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2004
    Messages
    452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2004
    Messages : 452
    Par défaut [MFC] imprimer une dialogue contenant un graphique
    Alors apres avoir parcouru la FAQ et le forum.
    J'ai trouvé pas mal de code permettant l'impression, mais aucun ne semble fonctionner pour moi


    Je m'y prend surement mal ... enfin bon le seul code qui m'a permis d'imprimer est celui-ci.
    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
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
     
        /*
        CDC             dc;
        CPrintDialog    printDlg(FALSE);
        
        // selection de l'imprimante.
        if (printDlg.DoModal() == IDCANCEL)   return;
        
           
        dc.Attach(printDlg.GetPrinterDC()); 
            
        dc.m_bPrinting = TRUE; // dc d'impression.
        
        // titre du document = titre application
        CString strTitle="mon document";   
        
        DOCINFO di;
        ::ZeroMemory (&di, sizeof (DOCINFO));
        
        di.cbSize = sizeof (DOCINFO);   
        di.lpszDocName = strTitle;
        
        // debut d'impression
        if(dc.StartDoc( &di )<0)
        {     
            MessageBox(_T("Erreur d'initialisation de l'imprimante"));
            return;
        }
     
        // demarre une page
        if (dc.StartPage()< 0)
        {
            MessageBox(_T("Impossible de demarrer la page"));
            dc.AbortDoc();
            return;
        }             
     
        // recuperation de la surface d'impression
        CRect rectDraw;
        rectDraw.SetRect(0, 0,
            dc.GetDeviceCaps(HORZRES),
            dc.GetDeviceCaps(VERTRES));        
        
        // recuperation eventuelle des marges d'impressions
        //static POINT ptmargins;
        //dc.Escape(GETPRINTINGOFFSET, 0, NULL, &ptmargins);    
     
         CFontEx FontEx;
     
         FontEx.GetFont(13,"Arial Bold");
     
    //     CFont* pOldFont = dc.SelectObject(&FontEx);
     
         CString strTxt=_T("Salut Bienvenue chez DVP !");
     
         CSize size=dc.GetTextExtent( strTxt);
     
         dc.TextOut((rectDraw.Width()-size.cx)/2, (rectDraw.Height()-size.cy)/2,strTxt);
     
         dc.EndPage(); // fin de la page a repeter donc pour chage page.
     
         dc.EndDoc();  // fin du document
     
      //   dc.SelectObject(pOldFont); 
     
      */
    Cependant il m'imprime le message situé à cette ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     CString strTxt=_T("Salut Bienvenue chez DVP !");
    voila j'y comprend pas grand chose à ce code.

    Je voudrais donc savoir comment imprimer ma dialogue avec mon graphique ou uniquemen mon graphique.

    Voila j'espere que vous m'aiderez parce que la je nage completement

    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,
    il est trés bien ce code ,
    il fait simplement ce que tu lui demande : imprimer Salut Bienvenue chez DVP !
    si tu veux imprimer comme une recopie d'ecran le contenu de ta dialogue ,il y a un autre post dans la faq sur le sujet.

  3. #3
    Membre éclairé
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2004
    Messages
    452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2004
    Messages : 452
    Par défaut
    ben je l'ai aussi essayé et celui la me lance 6024 impression mais le prob c'est que c'est des pages blanches

    si tu pouvais m'aider ca serai tres sympas

    en tout cas merci pour m'avoir repondu

  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
    Si le sujet c'est d'imprimer le contenu d'une dialogue ,le sujet est traité dans la faq et fonctionne.
    http://c.developpez.com/faq/vc/?page...PrintDialgoBox

    en dehors de probleme de connectique ,pilote d'impression etc.
    Pour t'en convaincre édite dans le pilote du fax de microsoft fax.
    tout le reste est une question de context d'utilisation.

  5. #5
    Membre éclairé
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2004
    Messages
    452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2004
    Messages : 452
    Par défaut
    Merci v tester ca et je te tiens au courant

  6. #6
    Membre éclairé
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2004
    Messages
    452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2004
    Messages : 452
    Par défaut
    finalement c'a ne fonctionne pas
    lorsque je lance l'impression de mon dialogue il me genere un message d'erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    debug assertion failed
    file : olecli1.cpp
    line : 489
    c'a proviens du faites peu etre que je n'ai pas rajouté la portion de code suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Imprimer le bitmap:
     Un problème se pose:
     Le bitmap généré représente un DDB :device-dependent bitmap . Et ce type de bitmap n'est pas imprimable directement ,il faudra le transformer en DIB device-independent bitmap.
     d'où l'utilisation dans mon exemple de la classe CPictureHolder .
     Le même problème sera rencontré avec l'utilisation de la fonction CBitmap::LoadBitmap, pour contourner le problème il faudra faire comme suit:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
     VERIFY (bm.Attach (::LoadImage (::AfxFindResourceHandle(
     MAKEINTRESOURCE (inBitmapID), RT_BITMAP),
     MAKEINTRESOURCE (inBitmapID), IMAGE_BITMAP, 0, 0,
     (LR_DEFAULTSIZE | LR_CREATEDIBSECTION))))
    en faites j'ai pas trop bien compris ou le mettre alors c'a pourrais peu etre provenir de la mon plantage.

    En tout cas c'est bien trop difficile pour moi alors si quelqu'un pouvais m'aider c'a serai avec plaisir

  7. #7
    Membre éclairé
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2004
    Messages
    452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2004
    Messages : 452
    Par défaut
    ptit up please je bute enormament sur ce probleme personne pour meguiller ????

  8. #8
    Membre éclairé
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2004
    Messages
    452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2004
    Messages : 452
    Par défaut
    j'ai reessayer avec le code de farscape trouvé sur le lien du dessus mais je ne comprend pas pourquoi c'a plante j'ai pourtant tout bien recopié.

    Cependant je n'ai pas compris ou copié cette portion de code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
     
     VERIFY (bm.Attach (::LoadImage (::AfxFindResourceHandle(
     MAKEINTRESOURCE (inBitmapID), RT_BITMAP),
     MAKEINTRESOURCE (inBitmapID), IMAGE_BITMAP, 0, 0,
     (LR_DEFAULTSIZE | LR_CREATEDIBSECTION))))
    c'a doit surement provenir de la SVP quelqu'un pourrait-il m'aider svp

  9. #9
    Membre éclairé
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2004
    Messages
    452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2004
    Messages : 452
    Par défaut
    je vais passer pour un superNoobies mais de totue facon c'est pas faux

    ce code doit etre copié dans la classe CBitmap cependant elle n'apparait pas dans mon arborescence de mes fichier .h ou .cpp et je voudrais donc aller y acceder mais comment faire ???

  10. #10
    Membre éclairé
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2004
    Messages
    452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2004
    Messages : 452
    Par défaut
    bon finalement j'ai reussi à acceder à la classe CPictureHolder dans le fichier afxctl.h

    mais lorsque je copie ce morceau de code il me dit :
    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
    40
    41
    42
     
     
    class CPictureHolder
    {
    // Constructors
    public:
        CPictureHolder();
     
    // Attributes
        LPPICTURE m_pPict;
     
    // Operations
        BOOL CreateEmpty();
     
        BOOL CreateFromBitmap(UINT idResource);
        BOOL CreateFromBitmap(CBitmap* pBitmap, CPalette* pPal = NULL,
            BOOL bTransferOwnership = TRUE);
     
        BOOL CreateFromBitmap(HBITMAP hbm, HPALETTE hpal = NULL,
            BOOL bTransferOwnership = FALSE);
     
        BOOL CreateFromMetafile(HMETAFILE hmf, int xExt, int yExt,
            BOOL bTransferOwnership = FALSE);
     
        BOOL CreateFromIcon(UINT idResource);
        BOOL CreateFromIcon(HICON hIcon, BOOL bTransferOwnership = FALSE);
     
        short GetType();
        BOOL GetDisplayString(CString& strValue);
        LPPICTUREDISP GetPictureDispatch();
        void SetPictureDispatch(LPPICTUREDISP pDisp);
        void Render(CDC* pDC, const CRect& rcRender, const CRect& rcWBounds);
     
        VERIFY (bm.Attach (::LoadImage (::AfxFindResourceHandle(
     MAKEINTRESOURCE (inBitmapID), RT_BITMAP),
     MAKEINTRESOURCE (inBitmapID), IMAGE_BITMAP, 0, 0,
     (LR_DEFAULTSIZE | LR_CREATEDIBSECTION))));
     
    // Implementation
    public:
        ~CPictureHolder();
    };
    je sais pas trop si c'est la qu'il faut le mettre en tout cas c'est ce que j'ai compris dans la FAQ

    il me sort les erreurs suivantes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
     
    e:\program files\microsoft visual studio\vc98\mfc\include\afxctl.h(408) : error C2059: syntax error : 'do'
    e:\program files\microsoft visual studio\vc98\mfc\include\afxctl.h(408) : error C2334: unexpected token(s) preceding '{'; skipping apparent function body
    e:\program files\microsoft visual studio\vc98\mfc\include\afxctl.h(408) : error C2059: syntax error : 'while'
    e:\program files\microsoft visual studio\vc98\mfc\include\afxctl.h(408) : error C2238: unexpected token(s) preceding ';'
    pourtant il n'y a ni do' ni 'while' dans ce code ?????

    comprend pas trop d'ou ca proviens.

    toutes aides sera la bienvenue en tout cas et merci à ceux qui m'ont repondu.

Discussions similaires

  1. [MFC] imprimer un dialogue au format DIB
    Par moulefrite dans le forum MFC
    Réponses: 6
    Dernier message: 02/05/2006, 10h53
  2. [MFC] imprimer une view
    Par bigboomshakala dans le forum MFC
    Réponses: 5
    Dernier message: 14/11/2004, 23h58
  3. Réponses: 3
    Dernier message: 17/06/2004, 16h59
  4. [MFC] afficher une boîte de dialogue
    Par bigboomshakala dans le forum MFC
    Réponses: 13
    Dernier message: 10/05/2004, 14h22
  5. [MFC] rendre une boite de dialogue inactive
    Par Vestaproman dans le forum MFC
    Réponses: 8
    Dernier message: 22/01/2004, 14h09

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