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 :

CDialog dans une CDockablePane


Sujet :

MFC

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 67
    Par défaut CDialog dans une CDockablePane
    En prenant comme type d'application Mono document (SDI) et comme style du projet Visual Studio, on construit une superbe application avec (et c'est ce qui m'intéresse) de vrais fenêtres dockables... Elles dérivent de la classe CDockablePane et incluent par exemple des CTreeView, des CListBox et autres CComboBox...


    Mon but est d'y placer une instance d'une classe dérivée de CDialog. Mais même en changeant le style de WS_POPUP à WS_CHILD dans la méthode OnCreate, la boite de dialogue refuse obstinément de participer au mécanisme des dockables...

    Quelqu'un a_t-il une idée ou un exemple basique à me fournir?

    Merci d'avance.

  2. #2
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 461
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 461
    Par défaut
    Dans CDialog, il y a dialog, c'est à dire "boite de Dialogue".
    C'est une fenêtre autonome qui n'utilise pas le concept Document/Vue des MDI, donc encore moins le concept de WindowsManager des Vues Dockable.

    Il serait bien plus simple de transférer le code utile depuis votre CDialog vers une CDockablePane plutôt que tenter de faire entrer une dialogue dans l'interface qui n'est pas faite pour cela.

  3. #3
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 393
    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 393
    Par défaut
    Mais on doit pouvoir inclure une CDialog "child" dans tout ce qui dérive de CWnd, non?
    Edit: Mais à mon avis, le réclage à WS_CHILD ne se fait pas dans OnCreate, mais directement dans le .rc (ou l'éditeur)...
    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.

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 67
    Par défaut
    Médinoc a raison... Comment ai-je pu oublier ça?
    Ca ne résoud pas tout, mais la boite de dialogue apparaît bien maintenant dans le Dockablepane...

    Reste des problèmes de placement et autres bétises du type barre de titre... Mais on revient sur des trucs maitrisables.

  5. #5
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 461
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 461
    Par défaut
    Moi, je suis pas sur que le menu "Windows", la toolbar, le menu contextuel etc... aimeront beaucoup cela.

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 67
    Par défaut
    OK... 3 ou 4 propriétés à modifier sur la boite de dialogue...
    Un peu de code dans le OnSize de la DockablePane et ca marche... La preuve:


    Et garanti, j'ai testé, elle fait bien parti de la dockable, bouge bien avec, et tout et tout...

    OK... Je clos le sujet... Merci à Médinoc! Bacelar, tu es trop pessimiste...

  7. #7
    Membre émérite
    Avatar de Gabrielly
    Inscrit en
    Juin 2004
    Messages
    722
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 722
    Par défaut
    La classe candidate est la CPaneDialog

    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
     
    CPaneDialog        m_wndDlgBar;
     
    ...
     
     
        // The this pointer points to a CMainFrame class which extends the CFrameWnd class.
        if (!m_wndDlgBar.Create (_T("DialogBar"), this, TRUE, 
                                 MAKEINTRESOURCE (IDD_DLG_BAR), 
                                 WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS | WS_CLIPCHILDREN | CBRS_LEFT | CBRS_FLOAT_MULTI, 
                                 ID_VIEW_DLGBAR))
        {
            TRACE0("Failed to create Dialog Bar\n");
            return FALSE;      // fail to create
        }

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

Discussions similaires

  1. CDialog dans une CView
    Par Zorgblub dans le forum MFC
    Réponses: 1
    Dernier message: 03/05/2010, 22h20
  2. CDialog dans une DLL à partir d'un EXE en C
    Par mastergoddot dans le forum MFC
    Réponses: 10
    Dernier message: 05/07/2007, 15h26
  3. [MFC] CDialog dans une CFrameWnd
    Par r0d dans le forum MFC
    Réponses: 6
    Dernier message: 16/05/2006, 09h43
  4. Réponses: 2
    Dernier message: 17/02/2004, 23h27
  5. 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