Je cherche fondamentalement à obtenir un système d'interface graphique de type natif dans mon OpenGL/jeu. J'ai besoin d'afficher une seule fenêtre à l'utilisateur.en utilisant wxWidgets dans une application GLUT/autre
Je regarde wxWidgets. Parce qu'il fonctionne en "volant" le WinMain/MainLoop, j'essaye de le pirater pour que je puisse exécuter sa boucle principale sur un thread séparé.
Parce que je ne pouvais pas obtenir son wxThread fonctionne bien, je l'ai fait un « échantillon » with Windows threads ... mais l'initialisation se brise encore sur les entrailles wxWidgets ...
Tous les commentaires sur ce ?
Mon code est le suivant:
class MyApp: public wxApp
{
virtual bool OnInit();
};
DECLARE_APP(MyApp)
IMPLEMENT_APP_NO_MAIN(MyApp)
DWORD WINAPI MyThreadFunction(LPVOID lpParam)
{
wxApp* pApp = new MyApp();
wxApp::SetInstance(pApp);
int argc = 0; wxChar ** argv = NULL;
wxEntryStart(argc, argv);
pApp->CallOnInit();
pApp->OnRun();
return 0;
}
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, wxCmdLineArgType lpCmdLine, int nCmdShow) {
DWORD id = 0;
CreateThread(NULL,0, MyThreadFunction,NULL, 0,&id);
assert(id != NULL);
return 0;
}
J'ai essayé de faire le code d'initialisation wxWidgets dans le thread principal, et seulement appeler la CallOnInit() dans le thread séparé, mais même résultat.
Pourquoi avez-vous besoin de travailler en dehors du framework wxWidgets pour le thread principal? Juste curieux puisque j'utilise aussi wxWidgets/OpenGL pour un jeu et utilise simplement la fonction inactive pour mon "main". –
Je ne voulais pas que mon jeu dépende de wxWidgets ... seulement sur la surabondance. Si wxWidgets est disponible, très bien, je peux afficher l'interface graphique. – fabiopedrosa
Que voulez-vous dire? wxWidgets sera disponible si vous expédiez votre jeu avec celui-ci, ou utilisez la version statique de la bibliothèque. – aib