CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

(MFC et Dx9) Probleme vue splite

Ruffi
Ruffi
Niveau 9
28 décembre 2004 à 15:35:44

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

Ruffi
Ruffi
Niveau 9
28 décembre 2004 à 17:06:29

C´est bon, j´ai trouvé :)

LGV
LGV
Niveau 28
28 décembre 2004 à 18:37:09

au passage, on retrouve aussi le papier de F. Luna sur GameDev, mais on y trouve aussi ceci, bcp plus interessant :

http://www.gamedev.net/reference/programming/features/3dmfc/

dans tous les cas, on notera bien qu´un seul LPD3DDIRECTDEVICE9 suffit à toute l´appli, le " split" se gerant à grand coup de viewports et de matrices de projections

Ruffi
Ruffi
Niveau 9
04 janvier 2005 à 21:33:58

Encore un petit probleme :
une de mes vue est un arbre ( herite de CTreeView).
J´initialise mon arbre dans OnInitialUpdate, mais je voudrai qu´en manipulant une autre vue, cela modifie mon arbre de A a Z. ( en gros je selection un objet dans une autre vue et j´ai un arbre qui m´affiche toutes ses proprietes selon le type de l´objet)
J´ai essayer en recreant l´arbre dans OnDraw et en faisant apel a UpdateAllViews, mais il semble pas passer dans cette fonction.

Ruffi
Ruffi
Niveau 9
05 janvier 2005 à 11:52:59

:up:

Ruffi
Ruffi
Niveau 9
06 janvier 2005 à 11:53:38

:up:

LGV
LGV
Niveau 28
06 janvier 2005 à 14:12:06

essaye le forum prog, c´est plus MFC brut ton soucis :/

Sous forums
  • Aide à l'achat Mac
  • Internet
  • Macintosh
  • Création de sites web
  • Création de Jeux
  • Linux
  • Programmation
  • Steam Deck
  • Hardware
La vidéo du moment