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

OpenGL Discussion :

Fenêtre OpenGL dans dialogbox


Sujet :

OpenGL

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 20
    Points : 16
    Points
    16
    Par défaut [Résolu] Fenêtre OpenGL dans dialogbox
    Salut,

    J'utilise Visual C++ 5.0
    J'ai réalisé une feuille SDI avec, à la place de l'espace de travail habituel (espace blanc), une boîte de dialogue. Je voudrais maintenant intégrer à cette boîte dialogue un emplacement où je pourrais faire apparaître ma fenêtre OpenGL. J'ai vu que l'on pouvait intégrer cette fenêtre openGL directement dans un group box.......

    Comment procéder ??
    Programmeur : Celui qui résout un problème que vous n'aviez pas, d'une façon que vous ne comprenez pas.

  2. #2
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 1
    Points : 1
    Points
    1
    Par défaut
    Etant donné que j'ai passé près de 3 semaines à résoudre le comment du problème d'afficher une fenetre Open GL dans une boite de dialogue, je sais à quel point on a envie d'avoir une solution.

    Voici comment j'ai procédé (peut-etre qu'il y a mieux, heureux les savants) :
    - creation d'un group box dans ma boite de dialogue. Très important, cette group box doit avoir l'option Transparent activée

    - Creation d'une boite de dialogue de type Child. Cette boite servira de classe pour contenir le code OpenGL. Les règles du forum m'interdise de te copier tout le code associé à ceci, mais c'est tout ce que l'on trouve habituellement pour ouvrir une fenêtre openGL du type CreateViewGLContext, SetWindowPixelFormat, etc.
    (tutoriel sur www.nehe.gamedev.net si necessaire).
    Il faut également ajouter le code à une fonction OnSize de cette classe pour que la fenêtre OpenGL s'adapte au groupe box défini préalablement :

    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
    16
    17
    18
    19
    20
    21
     
    void COpenGL::OnSize(UINT nType, int cx, int cy) 
    {
    	GLdouble aspect;
    	CDialog::OnSize(nType, cx, cy);
     
    	CDialog::OnSize(nType, cx, cy);
    	GLsizei width,height;
    	width = cx;
    	height = cy;
    	if(cy==0)
    		aspect = (GLdouble)width;
    	else
    		aspect = (GLdouble)width/(GLdouble)height;
    	glViewport(0,0,width,height);
    	glMatrixMode(GL_PROJECTION);
    	glLoadIdentity();
    	gluPerspective(45,aspect,0.001,60.0);
    	glMatrixMode(GL_MODELVIEW);
     
    }
    - dans la classe de ta boite de dialogue (celle qui contient le groupe box), il faut ajouter dans la fonction OnInitDialog le code permettant d'attacher physiquement la fenêtre fille à l'emplacement du group box :

    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
    // crée une fenêtre fille pour le volume en 3D
    	m_WindowVol3D.Create(IDD_CHILD_VOL3D_OPENGL, this);
    	m_WindowVol3D.ShowWindow(true);
     
    	//attache la fenêtre fille au cadre de destination
    	CRect clientRect;
    	m_CtrlGrandCadre.GetWindowRect(&clientRect);
    	ScreenToClient(&clientRect);
    	clientRect.top += 15;
    	clientRect.bottom -=3;
    	clientRect.left += 3;
    	clientRect.right -= 3;
    	m_WindowVol3D.MoveWindow(clientRect);
    	m_WindowVol3D.InvalidateRect(NULL,FALSE);
    	m_WindowVol3D.SetActiveWindow();
    J'espère que celà t'aidera.

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 20
    Points : 16
    Points
    16
    Par défaut
    Merci roland,

    En fait je suis passé par un objet Picture et j'ai créé une classe dont l'une des principales fonctions est de récupérer le DC des objets indiqués (pour afficher quelque chose à l'intérieur). Ainsi je peux facilement travailler sur plusieurs fenêtres dans ma dialog box. Dont celle OpenGL.
    Programmeur : Celui qui résout un problème que vous n'aviez pas, d'une façon que vous ne comprenez pas.

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

Discussions similaires

  1. Intégration d'une fenêtre opengl dans un winform C#
    Par vinch999 dans le forum OpenGL
    Réponses: 3
    Dernier message: 16/12/2010, 11h09
  2. Intégrer une fenêtre OpenGL dans un contenu flash
    Par claustre dans le forum Intégration
    Réponses: 0
    Dernier message: 18/05/2008, 08h50
  3. Réponses: 2
    Dernier message: 28/02/2007, 20h57
  4. Delphi - Fenêtre OpenGL dans PaintBox.
    Par joseph74 dans le forum OpenGL
    Réponses: 7
    Dernier message: 26/05/2004, 13h49

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