Salut tout le monde,
avec les differentes évolution d'OpenGL depuis le 1.0 mon Hello World win32/openGL ressemblait à de la soupe, du coup j'ai décidé de faire le ménage et de virer toutes mes (infâmes) variables globales dans un objet singleton. Je fais essentiellement du win32 sans MFC, et je me suis inventé un nouveau problème dont j'ai du mal à me sortir.
Pour faire simple j'ai surchargé le callback WndProc en rajoutant un pointeur vers mon objet d'application (qui est sensé avoir les handle de ma fenetre, le device context, le rendering context, etc). La définition ressemble à :
Code :
- static LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM, CBasicOpenGL*); // Declaration du WndProc
|
ensuite dans ma classe CBasicOpenGL j'ai ma fonction d'initialisation qui crée la classe WNDCLASS et l'enregistre mais c'est là que ca couille :
Code :
- GLuint PixelFormat;
- WNDCLASS wc;
- DWORD dwExStyle;
- DWORD dwStyle;
- RECT WindowRect;
- WindowRect.left = (long)0;
- WindowRect.right = (long)width;
- WindowRect.top = (long)0;
- WindowRect.bottom = (long)height;
- set_fullscreen(fullscreenflag);
- *get_hInstance() = GetModuleHandle(NULL);
- wc.style = CS_HREDRAW | CS_VREDRAW | CS_OWNDC;
- wc.lpfnWndProc = (WNDPROC)WndProc;
- wc.cbClsExtra = 0;
- wc.cbWndExtra = 0;
- wc.hInstance = *get_hInstance();
- wc.hIcon = LoadIcon(NULL, IDI_WINLOGO);
- wc.hCursor = LoadCursor(NULL, IDC_ARROW);
- wc.hbrBackground = NULL;
- wc.lpszMenuName = NULL;
- wc.lpszClassName = (LPCWSTR)L"BasicOpenGL";
- if (!RegisterClass(&wc))
- {
- //revoit ton code espèce de malpoli
- }
|
le voyou me dit ne pas savoir quelle instance de WndProc assigner à wc.lpfnWndProc
des idées ? Sinon je passe simplement mon objet app en variable globale et je vire le pointeur rajouté en argument dans la WndProc surchargée ?
mici missié les gourous !
Message édité par iceteapeche le 08-03-2014 à 10:44:12