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 CView


Sujet :

MFC

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Membre habitu�
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    8
    D�tails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2003
    Messages : 8
    Par d�faut CDialog dans une CView
    Je suis occup� � migrer une application MFC pour lui ajouter les fonctionalit�s de MFC 2008. Mon probl�me se situe lors de l'ajout du support des "tabbed groups".

    Pour r�sumer simplement, chaque vue (CView) comporte un formulaire sous forme de CDialog. Chacunes de ces vues utilise l'�venement "OnDraw" pour retailler dynamiquement le CDialog � la taille de la vue avec un "SetWindowPos(NULL,ux,uy,w,h,SWP_NOZORDER)". C'est-�-dire que si la vue est retaill�es, il faut que le formulaire � l'int�rieur suive. Les vues sont cr��es gr�ce � des fonctions disponibles dans la ribbon bar. Je n'ai pas choisi ce design et je ne peux pas envisager de le changer.

    Mon probl�me est que l'assert sur cette fonction dans le fichier winoccp.cpp:318 "ASSERT(::IsWindow(m_hWnd) || (m_pCtrlSite != NULL));" �choue lors de la cr�ation de la premi�re vue.

    Mon observation me montre que la cr�ation d'un tab provoque la cr�ation d'un conteneur de type TabWnd et que celui-ci n'existerait pas encore lors du premier appel � OnDraw de la vue. Le SetWindowPos() du CDialog est donc appell� mais son m_hWnd n'est pas encore valide � ce moment-l�...

    Si quelqu'un a une piste pour savoir o� je pourrais d�placer cette gestion de la taille des CDialog pour ne pas l'appeller avant la cr�ation de son conteneur parent (OnSize est aussi appell� trop tot) ou alors comment cr�er ce conteneur � l'avance (MDITabNewGroup(FALSE) ne fonctionne pas pour forcer la cr�ation du TabWnd).

    Merci d'avance

  2. #2
    R�dacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en s�curit�
    Inscrit en
    Mai 2007
    Messages
    11 517
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 62
    Localisation : France, Haute Garonne (Midi Pyr�n�es)

    Informations professionnelles :
    Activit� : Consultant en s�curit�
    Secteur : High Tech - Op�rateur de t�l�communications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Par d�faut
    J'ai d�j� eu des probl�mes avec le OnSize() qui est appel� trop t�t et je n'ai jamais trouv� de solution �l�gante.

    Ce que je fait dans ce cas, c'est dans OnInitDialog(), je positionne un membre de la classe bool�en � true (ce bool�en est initialis� � false dans le constructeur de la classe)

    et ensuite je ne traite pas le message OnSize() tant que ce bool�en faut false (mais je le passe quand m�me le message � la classe de base).

    C'est pas tr�s propre mais cela m'a d�pann�.

    Maintenant, les raisons de pourquoi le OnSize() est appel� trop t�t, je n'ai pas trop cherch�.
    Raymond
    Vous souhaitez participer � la rubrique R�seaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs syst�me et r�seau � configurer leurs �quipements SNMP r�seau.
    e-verbe Un logiciel de conjugaison des verbes de la langue fran�aise.

    Ma page personnelle sur DVP
    .

Discussions similaires

  1. 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
  2. [MFC] CDialog dans une CFrameWnd
    Par r0d dans le forum MFC
    R�ponses: 6
    Dernier message: 16/05/2006, 09h43
  3. [MFC] Dessin d'un CButton dans une CView ?
    Par ZeMike dans le forum MFC
    R�ponses: 1
    Dernier message: 12/04/2006, 15h06
  4. Afficher une FormView dans une Cview ?
    Par djiwalloo dans le forum MFC
    R�ponses: 1
    Dernier message: 10/09/2005, 18h36
  5. [MFC] Glisser/D�poser dans une CView
    Par octopus984 dans le forum MFC
    R�ponses: 2
    Dernier message: 26/04/2005, 10h15

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