Läuft, wird aber nicht angezeigt



  • Hi
    Mein DX8 Programm:

    //////////////////// Main.cpp ////////////////////
    
    //#pragma comment(lib, "ddraw.lib") // jetzt verwende libddraw.a  von DEV-CPP
    //#pragma comment(lib, "dxguid.lib") // jetzt verwende libdxguid.a von DEV-CPP
    
    #define WIN32_LEAN_AND_MEAN     // MFC abschalten (Nur unnötiger Ballast)
    #include <windows.h>  
    #include <dx\ddraw.h>                          
    
    LPDIRECTDRAW7 DirectDraw;           // Pointer auf das DirectDraw-Object
    HRESULT       ddrval;               // Wichtig für unsere Rückgabewerte
    
    LRESULT CALLBACK WindowProc (HWND hwnd, UINT message, WPARAM wparam, LPARAM lparam)
    {
      switch (message)
      {
    
       case WM_DESTROY:
        {
         DirectDraw->Release();
         DirectDraw = NULL;
         PostQuitMessage(0);
         return(0);
        }
         break;
    
        default: break;
      }
      return (DefWindowProc(hwnd,message,wparam,lparam));
    }
    
    int WINAPI WinMain(HINSTANCE hinst,HINSTANCE hprevinst,LPSTR lpcmdline,int ncmdshow)
    {
    WNDCLASSEX winclass;   // Die Fensterstruktur
    HWND       hwnd;
    MSG        message;
    const char szclassname[]="Klassenname";
    
    winclass.cbSize        = sizeof (WNDCLASSEX);
    winclass.style         = CS_HREDRAW | CS_VREDRAW;
    winclass.lpfnWndProc   = WindowProc;
    winclass.cbClsExtra    = 0;
    winclass.cbWndExtra    = 0;
    winclass.hInstance     = hinst;
    winclass.hIcon         = LoadIcon (NULL,IDI_APPLICATION);
    winclass.hCursor       = LoadCursor(NULL,IDC_ARROW);
    winclass.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
    winclass.lpszMenuName  = NULL;
    winclass.lpszClassName = szclassname;
    
    //HIER HABE ICH DEN ERSTEN PARAMETER BEAREITET
    hwnd = CreateWindowEx (/*NULL*/WS_EX_APPWINDOW, szclassname, "Titelleiste", WS_OVERLAPPEDWINDOW | WS_VISIBLE, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, NULL, NULL, hinst, NULL);
    
    ShowWindow(hwnd,ncmdshow);
    UpdateWindow(hwnd);
    
    ddrval = DirectDrawCreateEx(NULL, (VOID**)&DirectDraw, IID_IDirectDraw7, NULL);
    ddrval = DirectDraw->SetCooperativeLevel (hwnd, DDSCL_EXCLUSIVE | DDSCL_FULLSCREEN);
    
    ddrval = DirectDraw->SetDisplayMode (800,600,16, 0, 0);
    
    while (GetMessage(&message,NULL,0,0))
    {
         TranslateMessage(&message);
        DispatchMessage(&message);
    }
    return message.wParam ;
    }
    

    läst sich ohne Fehler und ohne Warnungen Kompilieren (DEV-CPP 4.9.x) und wird auch gestartet. allerdings wird nichts angezeigt, bzw nur der Desktop 😉
    mit anderen Worten: es wird nicht in den Vollbildmodus gewechselt, und nichtmals ein Fenster angezeigt.

    warum??


  • Mod

    wieso prüfst du nicht ab wo ein fehler auftritt? ob ein programm compiliert, hat ja nichts damit zu tun, ob es fehlerfrei läuft, frag einfach dein programm wo etwas falsch ist.
    mit fehlern beim initialiseren von DirectX haben wir nichts zu tun, dafür gibt es die doku. und mehr als da drinne steht können wir dir ja auch nicht wirklich sagen.

    das ist nichts gegen dich, aber es ist schon seltsam immer diese "ich hab hier was geschrieben, es läuft nicht, wer kann den fehler den ich gemacht hab beheben?"-threads zu sehen und sich zu fragen wieso jemand das nicht einfach debugged. das ist doch der einzige weg zum ziel, nur weil wir das für dich machen würden, würde es den weg nicht ändern.

    rapso->greets();



  • Ich hab leider keien Anleitung für DX. Ich hab mir das las "addon" für DEV-CPP runtergeladen (die libs und header)


  • Mod

    kann man alles von microsoft laden, die dokus gibt es auch online bei msdn

    aber ich frage mich wie du mit etwas arbeiten möchtest, ohne dessen doku 😉

    rapso->greets();



  • Grob gesagt: Mit Google lehrnt man fast alles, für den rest gibt's Foren 😉

    Ich suche mir im Internet immer nen Bischen code (als nächstes würde ich ein bmp einfügen) und versuche den dann zu verstehen, und benutze ihrn. Dann gehe ich das nächste Problem an, und versuche es zur Laufzeit zu bewegen. ...

    ps.: mit "für den rest gibt's foren" meine ich FAQ's



  • Dann bleibt noch Gehirnschmalz...



  • Kleiner Tipp:
    Du belegst zwar alle Member der WNDCLASSEX, registrierst aber die Klasse nicht...



  • if(!RegisterClassEx (&winclass))
    {
     error(__LINE__, "Fensterklasse konnte nicht registriert werden.", "RegisterClassEx-Error");
     return 0;
    }
    

    Leider wird die Funktion "error();" ausgeführt 😞


  • Mod

    RedEagle schrieb:

    if(!RegisterClassEx (&winclass))
    {
     error(__LINE__, "Fensterklasse konnte nicht registriert werden.", "RegisterClassEx-Error");
     return 0;
    }
    

    Leider wird die Funktion "error();" ausgeführt 😞

    tja, dann weißt du was du zu tun hast 😉

    rapso->greets();



  • Gib mal aus was direkt nach RegisterClassEx() GetLastError() ausspuckt.

    MfG SideWinder



  • Es wird "120" Ausgegeben


  • Mod

    RedEagle schrieb:

    Es wird "120" Ausgegeben

    und welcher fehlermeldung entspricht das?

    rapso->greets();



  • "Die Funktion ist nur im Win32-Modus gültig."

    Interessant.


  • Mod

    dann hast du vielleicht ne consolenanwendung compilert oder desgleichen. versuche es als win32 bzw winapi applikation zu compilieren... wenn du möchtest verschiebe ich den thread ins winapi forum 🙂

    rapso->greets();



  • "Win32 GUI" ist eingestellt (also nicht Konsole)

    ps.: benutze DEV-CPP fals das von interesse ist



  • Fehler gefunden:

    winclass.hIconSm = LoadIcon(NULL, IDI_APPLICATION);
    

    Diese Zeile fehlte.


Anmelden zum Antworten