Fonction membre en paramètre - C++ - Programmation
Marsh Posté le 24-09-2006 à 23:06:15
y'a tout plein de façons de le faire,
avec les templates par exemple
Code :
|
Marsh Posté le 25-09-2006 à 02:15:19
sinon tu refais la méthode classique avec queue de messages. (tu mets en queue un ID ou l'adresse du button).
sinon vu que c'est de l'OpenGl, et si c'est pour un jeu, t'as pas vraiment un contexte de serveur graphique style serveur X ou GDI, donc tu peux très bien tester bouton par bouton..
class Button
{
public:
float x, y, width, height;
string Text;
bool Hit( float mx, float my);
};
vector<Button> GUI;
game_create_main_gui()
{
GUI.resize(5);
GUI[0].Text="New Game";
GUI[0].x=0.4;
GUI[0].width=0.6;
...
}
int game_click_gui(float x, float y)
{
for( int i = 0 ; i < GUI.size() ; ++i )
if( GUI[i].Hit( x,y ) )
return i;
}
et tu polles le clicage de ton interface (quand tu as un évenement de click souris) avec game_click_gui() par exemple.
Marsh Posté le 24-09-2006 à 22:08:41
Bonjour,
J'esseye de faire une GUI en openGL; voici comment je fait pour créer un bouton :
myButton = new button("okDefault.tga", "okClick.tga", "okFocus.tga", 0.0, 8.0, 10.8, 12.725);
Donc les 3 premiers paramètres sont les images du bouton et les 4 derniers se sont les coordonnées.
Mon problème : comment gérer les évènements ? J'aurais bien voulu un truc du genre :
myButton = new button("okDefault.tga", "okClick.tga", "okFocus.tga", 0.0, 8.0, 10.8, 12.725, uneClasse::fctOnClick);
Et quand la classe button détecte un click de souris sur le bouton, elle exécute la fonction uneClasse::fctOnClick.
Mais est-il possible de passer une fonction membre en paramètre ? Si oui comment ?
Et si ce n'est pas possible : quel solution me reste-t-il ? J'ai vu que wxWidgets utilise les macro pour les évènements mais comment est-ce que ça fonctionne ?
Merci d'avance...
Message édité par casafa le 24-09-2006 à 22:09:25