XVIII. Intégrer la fenêtre freeGLUT dans un formulaire▲
Il est possible d’intégrer la fenêtre freeGLUT dans un formulaire.
Ceci permet de bénéficier des fonctions de freeGLUT (notamment la gestion du clavier, souris…) tout en ayant une fenêtre intégrée à l’application.
Pour masquer la barre de titre et les bordures de la fenêtre freeGLUT, utilisez les options GLUT_BORDERLESS et GLUT_CAPTIONLESS lors de l’appel à la fonction glutInitDisplayMode
XVIII-A. Pour Access▲
Utilisez la fonction putInForm du module de classe clOpenGLGlutInAccessForm.
Cette fonction demande en arguments :
- l’identifiant de fenêtre freeGLUT (celui retourné par glutCreateWindow) ;
- le formulaire Access ;
- le numéro de section (acDetail, acHeader ou acFooter).
' Création d'une fenêtre
lWindow =
glutCreateWindow
(
"Tutoriel fenêtre GLUT"
)
' Déplace la fenêtre dans le formulaire
Dim
loOpenGLForm As
New
clOpenGLGlutInAccessForm
loOpenGLForm.putInForm
lWindow, Forms
(
"frmOpenGL"
), acDetail
Il est impératif de définir la propriété « Sur chargement » du formulaire à « [Procédure événementielle] ».
Sinon il faut détruire la fenêtre freeGLUT manuellement.
Pour que la fenêtre freeGLUT se redimensionne automatiquement, définissez la propriété « Sur redimensionnement » du formulaire à « [Procédure événementielle] ».
XVIII-B. Pour un UserForm (Excel, Word…)▲
Utilisez la fonction putInFrame du module de classe clOpenGLGlutInUserForm.
Cette fonction demande en arguments :
- l’identifiant de fenêtre freeGLUT (celui retourné par glutCreateWindow) ;
- un contrôle Frame.
La fenêtre freeGLUT est intégrée dans la Frame définie.
Comme il n’est pas possible de capturer l’événement de fermeture du formulaire dans le module de classe, il est nécessaire de créer ce dernier dans le formulaire, sinon la fenêtre freeGLUT n’est pas fermée.
Dim
loGlutInForm As
clOpenGLGlutInUserForm
Public
Sub
putFreeGlutInMe
(
pWindow As
Long
)
Set
loGlutInForm =
new
clOpenGLGlutInUserForm
loGlutInForm.putInFrame
pWindow, Me.Frame1
End
Sub
' Création d'une fenêtre
lWindow =
glutCreateWindow
(
"Tutoriel fenêtre GLUT"
)
' Déplace la fenêtre dans la frame du formulaire FormOpenGL
FormOpenGL.Show
FormOpenGL.putFreeGlutInMe
lGlutWindow