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 :

Utiliser un contrôle mais sans fenêtre


Sujet :

MFC

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Profil pro
    Inscrit en
    Février 2004
    Messages
    1 825
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 1 825
    Par défaut Utiliser un contrôle mais sans fenêtre
    Bonjour à tous,

    Je voudrai utiliser les composants RichEdit dans une DLL afin de manipuler des documents RTF.

    J'aurai deux appli:
    - Une qui sera chez le client pour générer un document à partir d'un modèle, d'un XML de donnée et d'un XML d'instructions (placer cette donnée à tel endroit dans le document).
    - Et une qui sera utilisée chez nous pour pouvoir éditer facilement un document et créer ce XML d'instructions (en effet, actuellement nous le faisons à la main, et c'est très fastidieux et embêtant).

    D'où le besoin de l'intégrer dans une DLL, donc pas de fenêtre.

    J'ai regardé donc hier ces composants RichEdit, et il s'avère que le CRichEditCtrl réclame un Handle parent. A part créer une fenêtre et la laisser cachée, je ne vois pas ce que je peux faire, mais peut-être il y aurai quelque chose de plus propre?

    Merci beaucoup

    A bientôt

  2. #2
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    Que se passe-t-il si tu lui passes NULL ?
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  3. #3
    Membre éprouvé
    Profil pro
    Inscrit en
    Février 2004
    Messages
    1 825
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 1 825
    Par défaut
    Lorsque je mets null, ça tombe dans une assertion au niveau de wincore dans la méthode CWnd::Create:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    // can't use for desktop or pop-up windows (use CreateEx instead)
    ASSERT(pParentWnd != NULL);
    ASSERT((dwStyle & WS_POPUP) == 0);
    Le Contrôle possède également une méthode CreateEx, mais celle-ci s'en réfère toujours à CWnd::Create et non CWnd::CreateEx...

    :'(

  4. #4
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    En ce cas, j'ai bien peur que tu sois obligé de créer ton RichEdit dans une fenêtre.
    Citation Envoyé par [url=http://msdn2.microsoft.com/en-us/library/kzc3cx8z(VS.80).aspx]Doc de CRichEditCtrl::Create()[/url]
    Apply the following window styles to an edit control.
    WS_CHILD Always.
    Ou bien, tu peux essaayer un contrôle RichEdit sans MFC...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  5. #5
    Membre éprouvé
    Profil pro
    Inscrit en
    Février 2004
    Messages
    1 825
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 1 825
    Par défaut
    Pour le moment j'ai ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    #define _AFXDLL
     
    #include <afxcmn.h>
    #include <Richedit.h>
    #include <Richole.h>
     
    void main(int argc, const char* argv[])
    {
    	CRichEditCtrl* test = new CRichEditCtrl();
    	CreateEx(0, ES_MULTILINE, CRect(10, 10, 50, 50), NULL, 50);
    }
    Je vais continuer en créant une fenêtre, ça sera plus simple pour voir ce que je fais, et puis si un jour je trouve mieux qu'une fenêtre cachée...

    Merci beaucoup

Discussions similaires

  1. [XL-2003] Utiliser des contrôles sans Userform
    Par Uska1 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 06/01/2010, 18h21
  2. Réponses: 1
    Dernier message: 07/02/2009, 14h27
  3. Réponses: 0
    Dernier message: 06/02/2008, 12h34
  4. Réponses: 5
    Dernier message: 04/02/2007, 22h01
  5. [PostgreSQL]PostgreSQL sous windows mais sans Cygwin
    Par manou dans le forum Administration
    Réponses: 8
    Dernier message: 17/04/2003, 16h19

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