Zugriff auf Methoden einer OpenGL Klasse
-
Hi,
ich habe eine Frage:
Ich habe 2 Klassen.
Klasse 1 ist meine OpenGL Klasse, die einen Würfel zeichnet. In dieser Klasse befindet sich die
LONG WINAPI MainWndProc (HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)Methode, um zB auf Tastendrücke zu reagieren.
Klasse 2 instanziiert und startet Klasse 1:
#include <windows.h> #include <gl/gl.h> #include <gl/glu.h> #include "Cube.h" Cube myCube; int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { myCube.go(hInstance, nCmdShow); //der folgende Aufruf wird nie ausgeführt myCube.rotate(); }Die Cube.go() sieht so aus:
int Cube::go(HINSTANCE hInstance, int nCmdShow) { const LPCWSTR appname = TEXT("OpenGL Sample"); WNDCLASS wndclass; MSG msg; // Define the window class wndclass.style = 0; wndclass.lpfnWndProc = (WNDPROC)MainWndProc; wndclass.cbClsExtra = 0; wndclass.cbWndExtra = 0; wndclass.hInstance = hInstance; wndclass.hIcon = LoadIcon(hInstance, appname); wndclass.hCursor = LoadCursor(NULL,IDC_ARROW); wndclass.hbrBackground = (HBRUSH)(COLOR_WINDOW+1); wndclass.lpszMenuName = appname; wndclass.lpszClassName = appname; // Register the window class if (!RegisterClass(&wndclass)) return FALSE; // Create the window hWnd = CreateWindow( appname, appname, WS_OVERLAPPEDWINDOW | WS_CLIPSIBLINGS | WS_CLIPCHILDREN, CW_USEDEFAULT, CW_USEDEFAULT, 800, 600, NULL, NULL, hInstance, NULL); if (!hWnd) return FALSE; // Initialize OpenGL Cube::InitGraphics(); // Display the window ShowWindow(hWnd, nCmdShow); UpdateWindow(hWnd); // Event loop while (1) { if (PeekMessage(&msg, NULL, 0, 0, PM_NOREMOVE) == TRUE) { if (!GetMessage(&msg, NULL, 0, 0)) return TRUE; TranslateMessage(&msg); DispatchMessage(&msg); } Cube::DrawGraphics(); } wglDeleteContext(hRC); ReleaseDC(hWnd, hDC); }In der Cube-Klasse habe ich eine Methode rotate(), die den Würfel rotieren lassen soll. Mein Problem ist nun, dass diese Methode anscheinend nicht aufgerufen wird, bis ich das Fenster, was ich mit myCube.go zeichne, geschlossen wird.
Wie könnte man das korrekt lösen, damit ich die myCube.rotate(); aufrufen kann?
Grüße
Alex
-
Mein Problem ist nun, dass diese Methode anscheinend nicht aufgerufen wird.
Wie könnte man das korrekt lösen?Vorher keine Endlosschleifen ausfuehren?
-
Jop gerade selbst gefunden.
Danke