fenster will sich nicht öffnen...grr
-
Hi...
... ich bin gerade dabei eine kleine grafikdemo zu coden, naja, dabeihmm...ich hock immer noch daran das fenster auf den Bildschirm zu bringen. Eigentlich hatt ich damit noch nie probs, aber ich will mal n bisschen ins oop einsteigen und hab gedacht, dass könnt ich doch gleich mal mit ner class machen...viel gelaber kurzer sinn, hier codefetzen:
aus der main.cpp:
#include "GLWindow.h" int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ) { MSG msg; GLWindow *pWnd = new GLWindow( "KoLF", 1024, 768, 32 ); bool done = false; while ( !done ) { while ( PeekMessage( &msg, NULL, 0, 0, PM_REMOVE ) ) { if ( msg.message == WM_QUIT ) done = true; TranslateMessage( &msg ); DispatchMessage( &msg ); } pWnd->SwapBuffers(); } delete pWnd; return 0; }
...und aus der GLWindow.h:
class GLWindow { private: HGLRC hRC; HDC hDC; HWND hWnd; HINSTANCE hInstance; public: GLWindow( char *title, int width, int height, int bpp ) { GLuint PixelFormat; WNDCLASS wc; DWORD dwExStyle; DWORD dwStyle; // Ganzes Fenster RECT WindowRect; WindowRect.left = (long)0; WindowRect.right = (long)width; WindowRect.top = (long)0; WindowRect.bottom = (long)height; hInstance = GetModuleHandle( NULL ); // Die Fensterklasse mit Infos füttern wc.style = CS_HREDRAW | CS_VREDRAW | CS_OWNDC; wc.lpfnWndProc = WndProc; wc.cbClsExtra = 0; wc.cbWndExtra = 0; wc.hInstance = hInstance; wc.hIcon = LoadIcon( NULL, IDI_WINLOGO ); wc.hCursor = LoadCursor( NULL, IDC_ARROW ); wc.hbrBackground = NULL; wc.lpszMenuName = NULL; wc.lpszClassName = "OpenGLWindow"; // Die Fensterklasse registrieren if ( !RegisterClass( &wc ) ) { MessageBox( NULL, "Die Fensterklasse konnte nicht registriert werden!", "ERROR", MB_OK | MB_ICONEXCLAMATION ); } // Zum Vollbild wechseln DEVMODE dmScreenSettings; memset( &dmScreenSettings, 0, sizeof( dmScreenSettings ) ); dmScreenSettings.dmSize = sizeof( dmScreenSettings ); dmScreenSettings.dmPelsWidth = width; dmScreenSettings.dmPelsHeight = height; dmScreenSettings.dmBitsPerPel = bpp; dmScreenSettings.dmFields = DM_BITSPERPEL | DM_PELSWIDTH | DM_PELSHEIGHT; if ( ChangeDisplaySettings( &dmScreenSettings, CDS_FULLSCREEN ) != DISP_CHANGE_SUCCESSFUL ) { MessageBox( NULL, "Konnte nicht in den Vollbildmodus wechseln!", "ERROR", MB_OK | MB_ICONEXCLAMATION ); } // Fensterstile setzen dwExStyle = WS_EX_APPWINDOW; dwStyle = WS_POPUP; ShowCursor( false ); AdjustWindowRectEx( &WindowRect, dwStyle, false, dwExStyle ); // Fenster erstellen if ( !(hWnd = CreateWindowEx( dwExStyle, "OpenGLWindow", title, dwStyle | WS_CLIPSIBLINGS | WS_CLIPCHILDREN, 0, 0, width,// WindowRect.right - WindowRect.left, height,// WindowRect.bottom - WindowRect.top, NULL, NULL, hInstance, NULL )) ) { MessageBox( NULL, "Fenster konnte nicht erstellt werden!", "ERROR", MB_OK | MB_ICONEXCLAMATION ); }
...naja, und mit eben dieser meldung stürtzt er dann ab, naja, nicht so richtig, das prog läuft noch, man sieht es aber nicht, und kann es nur per strg+alt+entf beenden ( was ich ja verstehen kann wenn kein fenster erstellt wurde *g)
ich hoffe ihr könnt mir helfen, wäre nett
cya kolf
falls ihr irgendwo ne liste habt, wie, wo, was für fehler beim fenster erstellen , hätt ich da auch ix dagegen
edit: Codetags gefixt.
Bitte rück deinen Code nächstesmal ein, dann ist der viel leichter zu verstehen.
-
Wo ist deine WndProc? Und dann noch das hier lesen: http://c-plusplus.net/forum/viewtopic.php?t=39356
-
thx...
keine angst, die WndProc ist schon da...bloß hab ich die halt der übersichtlichkeit weggelassen
cya kolf
-
Die WndProc ist aber wohl der springende Punkt! ist sie eine Member-Funktion, oder außerhalb der Klasse definiert?
-
ist sie eine Member-Funktion, oder außerhalb der Klasse definiert?
ist doch egal, solange es kompiliert.