fenster will sich nicht öffnen...grr



  • Hi...
    ... ich bin gerade dabei eine kleine grafikdemo zu coden, naja, dabei 😕 hmm...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.


Anmelden zum Antworten