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] Probleme avec nouveau document et imprimer.


Sujet :

MFC

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 21
    Points : 10
    Points
    10
    Par défaut [MFC] Probleme avec nouveau document et imprimer.
    Bonjour, je débute avec visual c++ et je me suis inspirer de ceci :http://farscape.developpez.com/tutor...arrer-mfc-vc6/
    pour faire un petit programme. Mais je bloque car je ne sais pas comment configurer quand on fait fichier->nouveau ou quand on clique sur l'icone nouveau pour que tous les cedit soit effacer (aussi bien dans la fenetre principale que dans les boites de dialogue).
    J'ai un autre probleme, je ne sais pas comment faire pour imprimer une des boite de dialogue relié avec la fenetre principale (SDI) par un bouton.
    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
    Points : 17 323
    Points
    17 323
    Par défaut Re: [MFC] Probleme avec nouveau document et imprimer.
    salut,
    on reprend dans l'ordre.
    Citation Envoyé par Link_23
    Mais je bloque car je ne sais pas comment configurer quand on fait fichier->nouveau ou quand on clique sur l'icone nouveau pour que tous les cedit soit effacer
    la commande fichier nouveau invoque la fonction du document:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    BOOL CSampleSDIDoc::OnNewDocument()
    {
    	if (!CDocument::OnNewDocument())
    		return FALSE;
     
    	// TODO: add reinitialization code here
    	// (SDI documents will reuse this document)
     
    	return TRUE;
    }
    pour reinitialiser la view:
    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
     
    BOOL CSampleSDIDoc::OnNewDocument()
    {
    	if (!CDocument::OnNewDocument())
    		return FALSE;
     
    	// TODO: add reinitialization code here
    	// (SDI documents will reuse this document)
     
        POSITION pos = GetFirstViewPosition();   
        CSampleSDIView* pView = static_cast<CSampleSDIView *>(GetNextView(pos));
     
        pView->RazEdit();
    	return TRUE;
    }
    // dans la view:
    //-------------------------------------------------------
    void CSampleSDIView::RazEdit()
    {
        CString *parString[]={
                          &m_StrNom,
                          &m_strPrenom,
                          &m_strAdresse2,
                          &m_strAdresse,
                          &m_strVille,
                          &m_strCdp
                            };
     
        for(int i=0;i<sizeof(parString)/sizeof(CString *);i++)            
            parString[i]->Empty();
        UpdateData(FALSE); // mise a jour des controles.
    }
    //-------------------------------------------------------
    void CSampleSDIView::OnButtonraz() 
    {
    	// TODO: Add your control notification handler code here
           RazEdit();
    }
    a noter que OnInitialUpdate est rappellée à chaque fois..
    pour les boites de dialogues je ne vois pas ton probleme.
    il suffit de fixer la valeur souhaitée et de faire UpdateData(FALSE).
    Citation Envoyé par Link_23
    je ne sais pas comment faire pour imprimer une des boite de dialogue relié avec la fenetre principale (SDI) par un bouton.
    pour imprimer une boite de dialogue voir faq:
    http://c.developpez.com/faq/vc/?page...PrintDialgoBox

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 21
    Points : 10
    Points
    10
    Par défaut
    Merci pour ton aide, je vais essayer d'y faire maintenant.

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 21
    Points : 10
    Points
    10
    Par défaut
    Ce week end j'ai pas trop eu le temps de tester, donc je l'ai fais ce matin.

    Donc pour ce qui est de fichier->nouveau sa marche tout bien.

    Mais de ce qui est d'imprimer la boite de dialogue j'ai pas trop compris comment il fallait faire.
    1°) Les lignes de codes qu'il y a dans la librairie msdn ( http://msdn.microsoft.com/library/default.asp?url=/library/en-us/gdi/bitmaps_5a5h.asp ) je ne sais pas vraiment ou les mettre dans le programmes.
    2°) dans ce lien là : http://c.developpez.com/faq/vc/?page...PrintDialgoBox
    Le premier rectangle de code je ne sais pas ou le placer non plus et le deuxième (dites moi si c bon) je l'ai mis dans CSampleView.cpp en déclarant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    CBitmap *CopyScreenToBitmap(LPRECT lpRect);
    CBitmap *CopyWindowToBitmap(CWnd* pWnd ,bool bWindowClient);
    void PrintBmp(CBitmap *pBmp);
    dans CSampleView.h
    et j'ai mis
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    CBitmap *pBmp=CopyWindowToBitmap(this,true);
    PrintBmp(pBmp);    
    pBmp->DeleteObject();
    delete pBmp;
    dans Cdialog.cpp dans void Cdialog::OnPrint() qui correspond au bouton que j'ai rajouter dans la boite de dialogue qui permettra d'imprimer la boite de dialogue.
    en rajoutant aussi dans Cdialog.cpp
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    #include "Salon de ToilettageDoc.h"
    #include "Salon de ToilettageView.h"

  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
    Points : 17 323
    Points
    17 323
    Par défaut
    bonsoir,
    les fonctions de la faq:
    CopyScreenToBitmap
    CopyWindowToBitmap
    PrintBmp
    peuvent etre definies comme fonctions membres dans ta boite de dialogue, ou dans une boite de dialogue qui servirait de classe de base à toutes tes dialogues.
    dans ta fonction onPrint il suffira de placer le code suivant de la faq:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Cdialog::OnPrint()
    {
        // contexte d'utilisation : dans une boite de dialogue ou view etc..
       CBitmap *pBmp=CopyWindowToBitmap(this,true);
       PrintBmp(pBmp);    
       pBmp->DeleteObject();
       delete pBmp;
    }

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 21
    Points : 10
    Points
    10
    Par défaut
    J'ai essayé de faire ce que tu as dit, mais j'ai des erreurs que je n'arrive pas a résoudre, les voici :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    CFactures.cpp(213) : error C2065: 'CPictureHolder' : undeclared identifier
     
    CFactures.cpp(213) : error C2146: syntax error : missing ';' before identifier 'picture'
     
    CFactures.cpp(213) : error C2065: 'picture' : undeclared identifier
     
    CFactures.cpp(214) : error C2228: left 
    of '.CreateFromBitmap' must have class/struct/union type
     
    CFactures.cpp(227) : error C2228: left of '.Render' must have class/struct/union type

  7. #7
    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
    Points : 17 323
    Points
    17 323
    Par défaut
    Citation Envoyé par Link_23
    J'ai essayé de faire ce que tu as dit, mais j'ai des erreurs que je n'arrive pas a résoudre, les voici :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    CFactures.cpp(213) : error C2065: 'CPictureHolder' : undeclared identifier
     
    CFactures.cpp(213) : error C2146: syntax error : missing ';' before identifier 'picture'
     
    CFactures.cpp(213) : error C2065: 'picture' : undeclared identifier
     
    CFactures.cpp(214) : error C2228: left 
    of '.CreateFromBitmap' must have class/struct/union type
     
    CFactures.cpp(227) : error C2228: left of '.Render' must have class/struct/union type
    salut ,si tu regardes le post de la faq tu verras qu'il faut inclure #include <afxctl.h>
    met le de préférence dans stdafx.h.

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 21
    Points : 10
    Points
    10
    Par défaut
    justement je l'ai fait, j'ai essayer d'y mettre dans stdafx.h comme tu viens de dire mais c'est pareil
    et je voudrai savoir si il faut mettre ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    VERIFY (bm.Attach (::LoadImage (::AfxFindResourceHandle(
     MAKEINTRESOURCE (inBitmapID), RT_BITMAP),
     MAKEINTRESOURCE (inBitmapID), IMAGE_BITMAP, 0, 0,
     (LR_DEFAULTSIZE | LR_CREATEDIBSECTION))))
    si oui ou le mettre

  9. #9
    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
    Points : 17 323
    Points
    17 323
    Par défaut
    Citation Envoyé par Link_23
    justement je l'ai fait, j'ai essayer d'y mettre dans stdafx.h comme tu viens de dire mais c'est pareil
    et je voudrai savoir si il faut mettre ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    VERIFY (bm.Attach (::LoadImage (::AfxFindResourceHandle(
     MAKEINTRESOURCE (inBitmapID), RT_BITMAP),
     MAKEINTRESOURCE (inBitmapID), IMAGE_BITMAP, 0, 0,
     (LR_DEFAULTSIZE | LR_CREATEDIBSECTION))))
    si oui ou le mettre
    tu as mis #include <afxctl.h> dans stdafx.h et fait clean + rebuild all et tu as toujours le pb ?
    c'est quoi la version de ton visual ?

    pour la deuxieme partie non relis le post de la faq ,c'etait pour expliquer la lecture d'un bitmap DIB...

  10. #10
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 21
    Points : 10
    Points
    10
    Par défaut
    J'ai visual C++ version 6.0

  11. #11
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 21
    Points : 10
    Points
    10
    Par défaut
    Désolé j'avais pas mis clean, jamais juste fais rebuild all, maintenant y'a plus d'erreur. merci
    en faite a quoi sa sert clean

  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
    Points : 17 323
    Points
    17 323
    Par défaut
    clean supprime les fichiers intermédiaires .pch .ncb + .obj etc..
    des fois en cas de changement majeur il est préférable de faire un clean avant rebuild all ....

  13. #13
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 21
    Points : 10
    Points
    10
    Par défaut
    Même joueur joue encore lol.
    Comment on enlève le mode paysage.

  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
    Points : 17 323
    Points
    17 323
    Par défaut
    re,
    comment les lignes:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
     DEVMODE FAR *pDevMode=(DEVMODE FAR *)::GlobalLock(printDlg.GetDevMode());
     
        // set orientation to landscape
        pDevMode->dmOrientation=DMORIENT_LANDSCAPE;
        ::GlobalUnlock(printDlg.GetDevMode());
    du coup il faudra certainement reregler les coefs d'ajustements:
    voir:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     // rectangle d'impression      
            int ncoefy=(rectDraw.Height()/bmpInfo.bmHeight);
     
            // centrer l'image sur la feuille
            int nX = rectDraw.left + (rectDraw.Width() - (bmpInfo.bmWidth*ncoefy)) / 2;
            int nY = rectDraw.top + (rectDraw.Height() - (bmpInfo.bmHeight*ncoefy)) / 2;

  15. #15
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 21
    Points : 10
    Points
    10
    Par défaut
    Merci bien sa marche, maintenant me reste plus qu'a trouvé les bons coefficients.

  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
    Points : 17 323
    Points
    17 323
    Par défaut
    Citation Envoyé par Link_23
    Merci bien sa marche, maintenant me reste plus qu'a trouvé les bons coefficients.
    il suffit de faire la meme chose mais sur la largeur (axe des x) ...


  17. #17
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 21
    Points : 10
    Points
    10
    Par défaut
    Merci pour l'aide problème résolu

  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
    Points : 17 323
    Points
    17 323
    Par défaut
    salut,alors pense a mettre résolu avec le bouton en bas a gauche

  19. #19
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 21
    Points : 10
    Points
    10
    Par défaut
    ok je savais pas comment on faisait.

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

Discussions similaires

  1. [MFC] Probleme avec des Dll en MFC
    Par jiraya43 dans le forum MFC
    Réponses: 7
    Dernier message: 03/05/2006, 09h54
  2. [MFC] Probleme avec CDialog
    Par le-makinero dans le forum MFC
    Réponses: 2
    Dernier message: 19/04/2006, 11h15
  3. [MFC] probleme avec le ClassWizard
    Par moulefrite dans le forum MFC
    Réponses: 3
    Dernier message: 31/03/2006, 16h54
  4. [MFC]Probleme avec attributs d'une LOGFONT
    Par Fildz dans le forum MFC
    Réponses: 3
    Dernier message: 08/01/2006, 18h59
  5. [MFC] probleme avec CFile
    Par benahpets dans le forum MFC
    Réponses: 12
    Dernier message: 18/08/2005, 11h29

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