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
Partager