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] CDialogBar récalcitrante


Sujet :

MFC

  1. #1
    Membre éclairé
    Inscrit en
    Février 2006
    Messages
    256
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 256
    Par défaut [MFC] CDialogBar récalcitrante
    Bonjour,

    Alors...,

    D'un côté, un exécutable dont la fenêtre principale est de type CMDIFrameWnd, et de l'autre une DLL dans laquelle je créée une classe dérivée de CDialogBar.

    Je veux donc attacher cette dlgBarre au bas de la CMDIFrameWnd de l'exe.

    Le problème :
    La dlgBarre est bien créée ( rapport au retour de fonction "Create" qui est différent de 0 ) mais elle est invisible alors que cette même dlgBarre, lorsqu'elle fait partie intégrante de l'exe, apparaît comme je le souhaite...

    NB : le "Resource.h" et le fichier "*.rc" de l'exe et de la Dll sont bel et bien distinct.

    Voilà, si quelqu'un a une piste...
    Merci d'avance

  2. #2
    Expert confirmé
    Avatar de Mat.M
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    8 526
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 8 526
    Par défaut
    Citation Envoyé par Denn's Voir le message
    Le problème :
    La dlgBarre est bien créée ( rapport au retour de fonction "Create" qui est différent de 0 ) mais elle est invisible alors que cette même dlgBarre, lorsqu'elle fait partie intégrante de l'exe, apparaît comme je le souhaite...
    la réponse est toute simple : c'est une différence de HINSTANCE.
    L'exécutable il est instancié avec un paramètre de type HINSTANCE, la dll avec un paramètre différent.
    La solution est de passer le HINSTANCE de l'exe lors de la création de la barre de contrôle dans la dll.

    Dans l'exe il faut appeler afxGetInstanceHandle et surchager la méthode de création de ta barre de contrôle.

    http://msdn.microsoft.com/en-us/libr...=vs.80%29.aspx
    Toute création de contrôle passe par CreateWindowEx , sous MFC c'est caché.



    Citation Envoyé par Denn's Voir le message
    mais elle est invisible alors que cette même dlgBarre, lorsqu'elle fait partie intégrante de l'exe, apparaît comme je le souhaite...
    eh bien il faut gérer la méthode/événement OnSize() et calculer les coordonnées du rectangle dans lequel est inscrit la CDialogBar

  3. #3
    Membre éclairé
    Inscrit en
    Février 2006
    Messages
    256
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 256
    Par défaut
    Salut,

    Marche pas ( J'y avais pensé ).

    NB : Je passe en paramètre dans la fonction exportée de la DLL, un pointeur sur le MDIFrameWnd de l'exe; Il est cohérent puisque j'arrive à modifier le titre de la fenêtre depuis la DLL, mais je n'arrive pas à rendre visible cette dialogbar créée de toute pièce dans la dll.

Discussions similaires

  1. Réponses: 9
    Dernier message: 16/05/2005, 17h43
  2. [MFC] - MDI : CDialogBar resize....
    Par Alice9 dans le forum MFC
    Réponses: 5
    Dernier message: 18/02/2005, 17h12
  3. Réponses: 12
    Dernier message: 15/02/2005, 15h34
  4. Réponses: 12
    Dernier message: 02/02/2005, 16h52
  5. [MFC] Mise à jour dimension des CDialogBar
    Par Kevgeii dans le forum MFC
    Réponses: 2
    Dernier message: 14/01/2004, 22h47

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