Salut a tous et bonne vacance a ceux qui ont la chance d´en avoir.
Je suis actuelement en train de faire un editeur de niveau. Pour que celui ci soit pratique a utiliser, j´ai decider de le faire en MFC, en splitant la vue. Je l´avais deja fait en OpenGL durant un stage, et j´avais vu que sa rendait l´utilisation du logiciel bien plus intuitive.
Pour cet editeur, la fenetre est decoupe en 4 vue, heritant chacune de CWnd, dont une affichant en 3D avec directX : pour cela, je me suis inspirer du tutorial de Frank Luna sur son site www.moon-labs.com ( http://moon-labs.com/resources/IntegratingDirect3D9.0WithMFC.pdf ) . Probleme, ca ne marche pas en vue splite. Des que je manipule une donnée membre, il plante 
J´ai contourne l´erreur en metant les donnes membres de ma classe en static... et sa marche.
Bien entendu, sa me va pas. Surtout que j´ai voulu mettre les objets 3D dans ma classe de doc, mais dans ma fonction render, je n´arive pas a recuperer le document ( un assert me dit qu´il est invalide).
Je pense que sa vient de la fonction OnIdle de ma class d´application, lorsque je recupere la fenetre pour lui demander de faire le update et le render.
CEditorView3D* cview = ( CEditorView3D*)mainFrame->GetWindow(GW_CHILD);
Car la logic du truc est d´utiliser le Idle de la classe d´application ( celle qui herite de CWinApp), pour appeler la fonction render et la fonction update de la classe de vue, qu´il recupere via la fonction GetWindow()
Il va donc chercher une fenetre , mais pas la bonne vu que dans mon aplication j´en ai plusieurs. C´est pour ca qu´avec les varibles en static ca marche.
J´ai essayé avec GW_HWNDLAST au lieu de GW_CHILD, mais sa marche pas mieux ( pourtant je declare cette classe de vue en dernier :
BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT / *lpcs*/, CCreateContext* pContext)
{
CSize size;
CRect rect;
GetClientRect(&);
size = rect.Size();
m_wndSplitter.CreateStatic(this,2,2);
m_wndSplitter.CreateView(0,0,RUNTIME_CLASS(CEdito
rViewRessource),CSize((int)(size.cx*0.2), ( int)(size.cy*0.5)),pContext);
m_wndSplitter.CreateView(1,0,RUNTIME_CLASS(CEdito
rViewItem),CSize((int)(size.cx*0.2), 0),pContext);
m_wndSplitter.CreateView(0,1,RUNTIME_CLASS(CEdito
rView2D),CSize(0, ( int)(size.cy*0.5)),pContext);
m_wndSplitter.CreateView(1,1,RUNTIME_CLASS(CEdito
rView3D),CSize(0, 0),pContext);
return TRUE;
}
Je cherche donc des idees pour resoudre ce probleme. Je cherche plus particulierement la methode pour recuperer le pointeur vers la fenetre de mon choix ( ici, celle de type CEditorView3D).
Merci