[OpenGL 4.4 / VS2013] Retrouver l'instance de mon WndProc surchargé

Retrouver l'instance de mon WndProc surchargé [OpenGL 4.4 / VS2013] - C++ - Programmation

Marsh Posté le 08-03-2014 à 10:32:17    

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 :
  1. 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 :
  1. GLuint  PixelFormat;
  2. WNDCLASS wc;
  3. DWORD  dwExStyle;
  4. DWORD  dwStyle;
  5. RECT  WindowRect;
  6. WindowRect.left = (long)0;
  7. WindowRect.right = (long)width;
  8. WindowRect.top = (long)0;
  9. WindowRect.bottom = (long)height;
  10. set_fullscreen(fullscreenflag);
  11. *get_hInstance() = GetModuleHandle(NULL);
  12. wc.style = CS_HREDRAW | CS_VREDRAW | CS_OWNDC;
  13. wc.lpfnWndProc = (WNDPROC)WndProc;
  14. wc.cbClsExtra = 0;
  15. wc.cbWndExtra = 0;
  16. wc.hInstance = *get_hInstance();
  17. wc.hIcon = LoadIcon(NULL, IDI_WINLOGO);
  18. wc.hCursor = LoadCursor(NULL, IDC_ARROW);
  19. wc.hbrBackground = NULL;
  20. wc.lpszMenuName = NULL;
  21. wc.lpszClassName = (LPCWSTR)L"BasicOpenGL";
  22. if (!RegisterClass(&wc))
  23.        {
  24.             //revoit ton code espèce de malpoli
  25.        }


 
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
Reply

Marsh Posté le 08-03-2014 à 10:32:17   

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed