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 :

Afficher une feuille dans un CDialog


Sujet :

MFC

  1. #1
    Membre très actif Avatar de subzero01
    Inscrit en
    Décembre 2007
    Messages
    281
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Décembre 2007
    Messages : 281
    Par défaut Afficher une feuille dans un CDialog
    Bonjour,
    j'aimerais afficher une feuille (qui est sensée être imprimée) sur une CDialog. Mais je ne sais pas comment procéder.
    Pour m'expliquer davantage, il s'agit d'un contrat rempli dans un CDialog et j'aimerais que quand l'utilisateur confirme l'enregistrement, une CDialog contenant le contrat sous forme d'une feuille (sa partie supérieur avec des scrollbars) s'affiche avec un bouton imprimer pour pouvoir imprimer la feuille.
    Si vous avez des idée je suis preneur. Merci.

  2. #2
    Membre éprouvé
    Avatar de TheGzD
    Homme Profil pro
    Ingénieur/ Docteur en Informatique
    Inscrit en
    Avril 2007
    Messages
    1 327
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Ingénieur/ Docteur en Informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 327
    Par défaut
    Si ton contrat contient essentiellement du texte tu peux aller regarder du côté du CRichEdit pour l'affichage à l'écran.

    Concernant l'impression c'est un peu pareil que lorsque tu surcharges une méthode d'affichage d'un composent héritant de CWnd. Sauf que cette fois tu devras manipuler le DC de l'imprimante au lieu de celui de écran (un exemple de la FAQ).

    Si tu as des questions un peu plus précises n'hésite pas

  3. #3
    Membre très actif Avatar de subzero01
    Inscrit en
    Décembre 2007
    Messages
    281
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Décembre 2007
    Messages : 281
    Par défaut
    Je te remerci pour la réponse.
    J'avais déjà commencé la solution avec le RichEdit mais je crein tomber dans des impasses vu que le rtf est un peu limité dans le traitement du texte.

  4. #4
    Membre éprouvé
    Avatar de TheGzD
    Homme Profil pro
    Ingénieur/ Docteur en Informatique
    Inscrit en
    Avril 2007
    Messages
    1 327
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Ingénieur/ Docteur en Informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 327
    Par défaut
    Ça dépend quelle version du RTF gère ton CRichEdit.

    Sinon tu peux directement dessiner dans ta CDialog (ou dans une de ses fenêtre-fille) et là tu es complètement libre, mais ça ne sera sûrement fastidieux et pas très maintenable.

  5. #5
    Membre très actif Avatar de subzero01
    Inscrit en
    Décembre 2007
    Messages
    281
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Décembre 2007
    Messages : 281
    Par défaut
    Je ne connais que deux versions du RichEdit 1 et 2.0, j'ai utilisé le controle 2.0 et je l'ai initialisé par la fonction ::AfxInitRichEdit2() mais je n'arrive pas a charger un doc rtf contenant du tableau ! par contre un simple rtf (du simple texte) se charge normalement.

  6. #6
    Membre éprouvé
    Avatar de TheGzD
    Homme Profil pro
    Ingénieur/ Docteur en Informatique
    Inscrit en
    Avril 2007
    Messages
    1 327
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Ingénieur/ Docteur en Informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 327
    Par défaut
    Je te le redis tout dépend dans quelle version de RTF est formaté ton document.
    Perso j'utilise un CRichEdit 4.1 (après je ne sais pas si les tableaux sont supportés, et je dois t'avouer que je n'ai pas cherché à le savoir ).
    Pour charger cette version du CRichEdit il va te falloir surcharger la classe CRichEdit et effectuer les modifications suivantes :

    Dans le .h tu déclares la variables suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    HINSTANCE m_hInstRichEdit50W;      // handle to MSFTEDIT.DLL
    (tu pourras ainsi utiliser une DLL plus récente que celle que le système va charger pour toi)

    Ensuite tu surcharges la méthode Create :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    BOOL CRichEditPerso::Create(DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID)
    {
        m_hInstRichEdit50W = LoadLibrary(_T("msftedit.dll"));
        if (!m_hInstRichEdit50W)
        {
            AfxMessageBox(_T("MSFTEDIT.DLL (CRichEdit4.1) Didn't Load"));
            return FALSE;
        }
     
        CWnd* pWnd = this;
        return pWnd->Create(_T("RICHEDIT50W"), NULL, dwStyle, rect, pParentWnd, nID);
    }
    (permets le chargement de la DLL contenant le CRichEdit 4.1)

    Pour finir ne pas oublier de libérer la DLL dans le destructeur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        //Free the MSFTEDIT.DLL library
        if(m_hInstRichEdit50W)
            FreeLibrary(m_hInstRichEdit50W);
    Après je ne t'assures pas que ça va résoudre ton problème, mais ça coûte pas très cher de tester.
    Au passage tu peux aussi poster ton fichier d'exemple, afin que je le teste chez moi, pour s'assurer que ça ne vient pas de ta façon de la charger dans le CRichEdit.

    Bon courage

  7. #7
    Membre très actif Avatar de subzero01
    Inscrit en
    Décembre 2007
    Messages
    281
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Décembre 2007
    Messages : 281
    Par défaut
    merci pour ta réponse je teste et je te répondrai

  8. #8
    Membre très actif Avatar de subzero01
    Inscrit en
    Décembre 2007
    Messages
    281
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Décembre 2007
    Messages : 281
    Par défaut
    Bonjour,
    en fait le problème était MOI ! car j'ai pas vérifié que le RichEdit etait Multiline. Et ca affiche donc les tableaux même en utilisant la classe d'origine. Mais le problème c'est que le document ne s'affiche pas comme si on l'ouvre avec wordpad (surtout ca n'affiche pas les tableaux imbriqués !).
    En plus de tout ca, j'aurais besoin d'inserer des images donc un travail de plus (j'ai remarqué que c'est de la galère pour y arriver) alors que moi je veux faire un simple affichage à l'ecran pour ensuite imprimer sur le papier.
    Finalement je pense que la solution avec le RichEdit est un peu plus compliquée que je croyais...

  9. #9
    Membre éprouvé
    Avatar de TheGzD
    Homme Profil pro
    Ingénieur/ Docteur en Informatique
    Inscrit en
    Avril 2007
    Messages
    1 327
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Ingénieur/ Docteur en Informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 327
    Par défaut
    Pour les images il faut les insérer sous forme de composants OLE, et en effet ça n'est pas le pied à implémenter

    Dans ton cas la solution simple reste de dessiner (à l'aide de contrôles graphiques ou statiquement dans ton code) tout ce dont tu as besoin dans une fenêtre.
    Ensuite tu l'imprimeras avec la méthode proposée la FAQ que je t'ai linkée précédemment.

    Courage !

  10. #10
    Membre très actif Avatar de subzero01
    Inscrit en
    Décembre 2007
    Messages
    281
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Décembre 2007
    Messages : 281
    Par défaut
    Oui j'aimerais bien opter pour la solution d'impression de fenetre, mais le probleme maintenant est comment integrer une CDialog dans une autre CDialog dans un rectangle précis (si la longueur verticale ne suffit pas on doit pouvoir scoller).
    Le truc marche tres bien pour une CFormView dans une CFormView mais si ma feuille heritais de CFormView elle n'acceptera pas etre affichée dans une CDialog.
    Ce qui me reste est "est ce que je peux créer une CFormView modale ?"

  11. #11
    Membre éprouvé
    Avatar de TheGzD
    Homme Profil pro
    Ingénieur/ Docteur en Informatique
    Inscrit en
    Avril 2007
    Messages
    1 327
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Ingénieur/ Docteur en Informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 327
    Par défaut
    Tu as juste à créer une CDialog dans une autre et préciser que c'est une fenêtre-fille via l'éditeur graphique par exemple. Tu gères cette fenêtre-fille au niveau de la fenêtre-parent comme s'il s'agissait de n'importe quel contrôle.

  12. #12
    Membre très actif Avatar de subzero01
    Inscrit en
    Décembre 2007
    Messages
    281
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Décembre 2007
    Messages : 281
    Par défaut
    J'ai réussi a tout faire sauf le scrolling !
    Comment dire a mon container (qui est une simple CDialog fille) et qui contient lui aussi la feuille (qui est aussi une simple CDialog fille) qu'il doit se scroller pour afficher la feuillle entière si on utilise les scrollbars ?

  13. #13
    Membre éprouvé
    Avatar de TheGzD
    Homme Profil pro
    Ingénieur/ Docteur en Informatique
    Inscrit en
    Avril 2007
    Messages
    1 327
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Ingénieur/ Docteur en Informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 327
    Par défaut
    Je te conseille de mettre les scrollbars dans la fenêtre-fille.
    Et là dynamiquement en fonction de la position des ascenseurs, tu décideras qu'afficher. Bienvenu dans le monde des comptes d'apothicaire

  14. #14
    Membre très actif Avatar de subzero01
    Inscrit en
    Décembre 2007
    Messages
    281
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Décembre 2007
    Messages : 281
    Par défaut
    Oui c'set ce que j'ai fait, en fait on pense de la meme façon, je commence à applicquer mon idée et j'attends la tienne et je trouve que c'est exactement ce que j'etais en train de faire
    Je te remercie infiniment pour l'aide. Je vais appliquer l'idée d'impression de la fenetre qui est la plus simple.

  15. #15
    Membre éprouvé
    Avatar de TheGzD
    Homme Profil pro
    Ingénieur/ Docteur en Informatique
    Inscrit en
    Avril 2007
    Messages
    1 327
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Ingénieur/ Docteur en Informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 327
    Par défaut
    Pas de problème

    Si tu as d'autres questions ou d'autres soucis n'hésite pas.

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

Discussions similaires

  1. Afficher une feuille excel dans un OLE
    Par mickdu29 dans le forum VB 6 et antérieur
    Réponses: 11
    Dernier message: 23/02/2011, 01h03
  2. Afficher une feuille Excel dans une page .aspx
    Par AJemni dans le forum ASP.NET
    Réponses: 5
    Dernier message: 19/10/2009, 11h28
  3. [XL-2007] Afficher une checkbox dans une feuille si une checkbox d'une autre feuille est cochée
    Par JessieCoutas dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 18/08/2009, 13h35
  4. Réponses: 3
    Dernier message: 28/01/2004, 14h55

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