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 [cpp]LONG WINAPI MainWndProc (HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)[/cpp] Methode, um zB auf Tastendrücke zu reagieren.
Klasse 2 instanziiert und startet Klasse 1:
Alles anzeigen
Die Cube.go() sieht so aus:
Alles anzeigen
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
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 [cpp]LONG WINAPI MainWndProc (HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)[/cpp] Methode, um zB auf Tastendrücke zu reagieren.
Klasse 2 instanziiert und startet Klasse 1:
Quellcode
Die Cube.go() sieht so aus:
Quellcode
- 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