kostenloser Webspace werbefrei: lima-city


c/c++ problem

lima-cityForumProgrammiersprachenC/C++ und D

  1. Autor dieses Themas

    andieo

    Kostenloser Webspace von andieo

    andieo hat kostenlosen Webspace.

    so die ersten probleme sind beseitigt... musste nur noch direct x einbinden...:lol:

    ?brig bleien 4 fehler, f?r die ich echt keine erkl?rung hab... aber vielleicht ihr!!!

    hier erst ma die fehler:

    Tempor?re Dateien und Ausgabedateien f?r \"DDraw - Win32 Debug\" werden gel?scht.
    --------------------Konfiguration: DDraw - Win32 Debug--------------------
    Kompilierung l?uft...
    DDraw.cpp
    c:\\programme\\microsoft visual studio\\myprojects\\directdraw\\ddraw.cpp(196) : error C2664: \'GetAttachedSurface\' : Konvertierung des Parameters 1 von \'struct _DDSCAPS *\' in \'struct _DDSCAPS2 *\' nicht moeglich
    Die Typen, auf die verwiesen wird, sind nicht verwandt; die Konvertierung erfordert einen reinterpret_cast-Operator oder eine Typumwandlung im C- oder Funktionsformat
    c:\\programme\\microsoft visual studio\\myprojects\\directdraw\\ddraw.cpp(252) : error C2601: \'xxxDDraw_Puffer_leeren\' : Lokale Funktionsdefinitionen sind unzulaessig
    c:\\programme\\microsoft visual studio\\myprojects\\directdraw\\ddraw.cpp(269) : error C2601: \'xxxMale_Pixel\' : Lokale Funktionsdefinitionen sind unzulaessig
    c:\\programme\\microsoft visual studio\\myprojects\\directdraw\\ddraw.cpp(285) : error C2601: \'xxxDDraw_beenden\' : Lokale Funktionsdefinitionen sind unzulaessig
    Fehler beim Ausf?hren von cl.exe.

    DDraw.exe - 4 Fehler, 0 Warnung(en)


    und hier der code:

    //Datei: DDraw.cpp

    //INCLUDES////////////////////////////////////////////////////////////////////////////////////////////////

    #include <windows.h>
    #include <ddraw.h>
    #include \"DDraw.h\"

    //GLOBALES////////////////////////////////////////////////////////////////////////////////////////////////

    BOOL done;
    int Spiel_Zustand;
    HWND hwnd;
    LPDIRECTDRAW7 lpDD;
    LPDIRECTDRAWSURFACE7 lpDDSPrimary;
    LPDIRECTDRAWSURFACE7 lpDDSBack;


    //FUNKTIONEN//////////////////////////////////////////////////////////////////////////////////////////////

    //CALLBACK Funktion
    LRESULT CALLBACK WindowProc(HWND hwnd, UINT message, WPARAM wparam,
    LPARAM lparam)
    {
    switch(message)
    {
    case WM_DESTROY:
    {
    done = TRUE;
    PostQuitMessage(0);
    return 0;
    } break;

    case WM_KEYDOWN:
    switch (wparam)
    {
    case VK_ESCAPE:
    {
    PostMessage(hwnd, WM_CLOSE, 0, 0);
    return 0;
    } break;
    case VK_F12:
    {
    xxxDDraw_Puffer_wechseln();
    return 0;
    } break;
    } break;
    default:break;
    } //switch
    return (DefWindowProc(hwnd, message, wparam, lparam));
    } //WindowProc

    //Startfunktion
    int WINAPI WinMain(HINSTANCE hinst, HINSTANCE hprevinst,
    LPSTR lpcmdline, int ncmdshow)
    {
    WNDCLASSEX winclass;
    MSG message;
    const char szclassname[] = \"Klassenname\";
    DWORD loop_start_time;

    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.lpszClassName = szclassname;
    winclass.hIconSm = LoadIcon(NULL, IDI_APPLICATION);

    if (!RegisterClassEx(&winclass))
    return(0);

    // Handle zum erzeugen des globalen Fensters

    if (!(hwnd = CreateWindowEx(NULL, szclassname, \"3D Spieleprogrammierung - Titelleiste\", WS_POPUPWINDOW | WS_VISIBLE, 0, 0, 400, 300, NULL, NULL, hinst, NULL)))
    return(0);

    ShowWindow(hwnd, ncmdshow);
    UpdateWindow(hwnd);

    done = FALSE;
    Spiel_Zustand = SPIEL_AUSWAHL;

    //Phase1:
    Spiel_Intialisieren();

    //Phase2:
    //HAUPTSCHLEIFE///////////////////////////////////////////////
    while(!done)
    {
    while(GetMessage(&message,NULL,0,0))
    {
    TranslateMessage(&message);
    DispatchMessage(&message);
    } //PEEKMESSAGE

    //Startzeit der Hauptschleife
    loop_start_time = GetTickCount();

    switch(Spiel_Zustand)
    {
    case SPIEL_AUSWAHL:
    {
    //code
    Spiel_Zustand = SPIEL_START;
    } break;
    case SPIEL_LAUEFT:
    {
    //Alles f?rs Game...
    } break;
    case SPIEL_NEUSTART:
    {
    //code
    Spiel_Zustand = SPIEL_START;
    } break;
    default:break;
    } //switch zu Ende

    //Framebremse

    while ( (GetTickCount() - loop_start_time) < 20);
    } //Hauptschleife zu Ende

    //Phase 3:
    Spiel_Beenden();

    return message.wParam;

    } // WinMain zu Ende

    //PHASE 1:
    BOOL Spiel_Intialisieren(void)
    {
    int ret;
    ret = xxxDDraw_intialisieren();
    if (ret == 0)
    MessageBox(hwnd, \"Fehler beim Intialisieren von DirectDraw\",\"schwerer Ausnahmefehler\", MB_OK);
    return TRUE;
    }

    //PHASE 3:
    BOOL Spiel_Beenden(void)
    {
    xxxDDraw_beenden();
    return TRUE;
    }

    //Intialisierung

    BOOL xxxDDraw_intialisieren(void)
    {
    HRESULT ddrval;
    HDC hdc;
    DDSURFACEDESC2 ddsd;
    DDSCAPS ddscaps;

    ddrval = DirectDrawCreateEx(NULL, (LPVOID *)&lpDD, IID_IDirectDraw7,
    NULL);
    if(ddrval != DD_OK) {
    return 0;
    MessageBox(hwnd, \"DDraw Fehler: CreateEx()\", \"XXX\", MB_OK);
    }

    ddrval = lpDD->SetCooperativeLevel( hwnd, DDSCL_EXCLUSIVE |
    DDSCL_FULLSCREEN );
    if(ddrval != DD_OK) {
    return 0;
    MessageBox(hwnd, \"DDraw Fehler beim intialisern des Coop-Levels...\", \"XXX\", MB_OK);

    ddrval = lpDD->SetDisplayMode(SCREEN_BREITE, SCREEN_HOEHE,
    SCREEN_BPP, 0, 0);
    if(ddrval != DD_OK) {
    return 0;
    MessageBox(hwnd, \"DDraw Fehler: SetMode()\", \"XXX\", MB_OK);
    }

    //CREATE THE PRIMARY SURFACE WITH ONE BACK PUFFER!!!
    ZeroMemory(&ddsd, sizeof(ddsd));
    ddsd.dwSize = sizeof(ddsd);
    ddsd.dwFlags = DDSD_CAPS | DDSD_BACKBUFFERCOUNT;
    ddsd.ddsCaps.dwCaps = DDSCAPS_PRIMARYSURFACE | DDSCAPS_FLIP |
    DDSCAPS_COMPLEX;
    ddsd.dwBackBufferCount = 1;
    ddrval = lpDD->CreateSurface(&ddsd, &lpDDSPrimary, NULL);
    if(ddrval != DD_OK) {
    return 0;
    MessageBox(hwnd, \"DirectDraw Fehler: CreateSurf FEHLGESCHLAGEN\", \"XXX\", MB_OK);
    }

    ZeroMemory(&ddscaps, sizeof(ddscaps));
    ddscaps.dwCaps = DDSCAPS_BACKBUFFER;
    ddrval = lpDDSPrimary->GetAttachedSurface(&ddscaps, &lpDDSBack);
    if(ddrval != DD_OK) {
    return FALSE;
    MessageBox(hwnd, \"DDraw-Fehler: Attached Surface!!!!\", \"XXX\", MB_OK);
    }
    //beide Oberfl?chen mit wei? l?schen
    xxxDDraw_Puffer_leeren(lpDDSPrimary, 255);
    xxxDDraw_Puffer_leeren(lpDDSBack, 255);

    if (lpDDSPrimary->GetDC(&hdc) == DD_OK)
    {
    SetBkColor(hdc, RGB(0, 0, 0));
    SetTextColor(hdc, RGB(255, 255, 0));
    TextOut(hdc, 380, 300, \"FRONT\", lstrlen(\"FRONT\"));
    lpDDSPrimary->ReleaseDC(hdc);
    }

    if (lpDDSBack->GetDC(&hdc) == DD_OK)
    {
    SetBkColor(hdc, RGB(255, 0, 0));
    SetTextColor(hdc, RGB(255, 255, 0));
    TextOut(hdc, 380, 300, \"BACK\", lstrlen(\"BACK\"));
    lpDDSBack->ReleaseDC(hdc);
    }
    return TRUE;
    } //xxxDDraw intialisieren

    BOOL xxxDDraw_Puffer_wechseln(void);
    {
    HRESULT ddrval;

    for (int i=0; i<100; i++)
    {
    xxxMale_Pixel( rand()%800, rand()%600, rand()%256, lpDDSBack);
    }

    ddrval = lpDDSPrimary->Flip(NULL, DDFLIP_WAIT);
    if(ddrval == DD_OK)
    return TRUE;

    else if(ddrval == DDERR_SURFACELOST)
    {
    ddrval = lpDDSPrimary->Restore();
    if(ddrval != DD_OK)
    return FALSE;

    ddrval = lpDDSPrimary->Flip(NULL, DDFLIP_WAIT);
    if(ddrval != DD_OK)
    return FALSE;

    return TRUE;
    }
    return TRUE;
    } //xxxDDraw_Puffer_wechseln

    BOOL xxxDDraw_Puffer_leeren(LPDIRECTDRAWSURFACE7 lpDDSurf, UCHAR Farbe)
    {
    HRESULT ddrval;
    DDBLTFX ddBltFx;

    ZeroMemory(&ddBltFx,sizeof(DDBLTFX));
    ddBltFx.dwSize = sizeof(DDBLTFX);
    ddBltFx.dwFillColor = Farbe;

    ddrval = lpDDSurf->Blt(NULL, NULL, NULL, DBLT_COLORFILL |
    DBLT_WAIT , &ddBltFx);
    if (ddrval != DD_OK) {
    MessageBox(hwnd, \"Fehler beim leheren des Puffers!!!\", \"XXX\", MB_OK);
    return FALSE;
    }
    return TRUE;
    } //xxxDDraw_Puffer_leeren!!!

    BOOL xxxMale_Pixel(int x, int y, UCHAR Farbe, LPDIRECTDRAWSURFACE7 lpDDSurf) {
    int Zilenbreite;
    UCHAR *Vram;
    DDSURFACEDESC2 ddsd;

    ZeroMemory(&ddsd, sizeof(ddsd));
    ddsd.dwsize = sizeof(ddsd);

    lpDDSurf->Lock(NULL, &ddsd, DDLOCK_SURFACEMOMORYPTR |
    DDLOCK_WAIT, NULL);
    Zeilenbreite = ddsd.lpitch;
    Vram = (UCHAR *)ddsd.lpSurface;
    Vram[x + y*zeilenbreite] = Farbe;
    lpDDSurf->Unlock(NULL);
    }

    BOOL xxxDDraw_beenden(void) {
    if(lpDD != NULL)
    {
    if(lpDDSPrimary != NULL) {
    lpDDSPrimary->Release();
    lpDDSPrimary = NULL;
    lpDDSBack = NULL; }
    lpDD->Release();
    lpDD = NULL;
    }
    return TRUE;
    } //xxxDDraw_beenden();
    } //Programmende


    --------------------------------------------------

    //Datei: DDraw.h

    //DEFINITIONEN////////////////////////////////////////////////////////////////////////////////////////////////////

    #define WIN32_LEAN_AND_MEAN

    #define SPIEL_AUSWAHL 0
    #define SPIEL_START 1
    #define SPIEL_LAUEFT 2
    #define SPIEL_NEUSTART 3

    #define SCREEN_BREITE 800
    #define SCREEN_HOEHE 600
    #define SCREEN_BPP 8

    //MAKROS//////////////////////////////////////////////////////////////////////////////////////////////////////////

    //noch keine

    //PROTOTYPEN//////////////////////////////////////////////////////////////////////////////////////////////////////

    BOOL Spiel_Intialisieren(void);
    BOOL Spiel_Beenden(void);
    BOOL xxxDDraw_intialisieren(void);
    BOOL xxxDDraw_Puffer_wechseln(void);
    BOOL xxxDDraw_Puffer_leeren(LPDIRECTDRAWSURFACE7 lpDDSurf, UCHAR Farbe);
    BOOL xxxMale_Pixel( int x, int y, UCHAR Farbe,
    LPDIRECTDRAWSURFACE7 lpDDSurf);
    BOOL xxxDDraw_beenden(void);






    Beitrag ge?ndert am 17.02.2006 13:25 von andieo
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. 0******a

    Nenn mal deine eigene Headerdatei anders als DDraw.h. Weiss zwar jetzt nicht, ob das was bringt, aber k?nnte sein und ich bin jetzt zu faul, dies selbst zu ?berpr?fen.
  4. Autor dieses Themas

    andieo

    Kostenloser Webspace von andieo

    andieo hat kostenlosen Webspace.

    hallo????? also ?brigens das mit den datzein hat nix ge?ndert...
  5. Ein Fehler is denk ich mal ne Tippfehler:
    \"Lokale Funktionsdefinitionen sind unzul?ssig\" hei?t einfach das du wahrscheinlich in einer Funktion eine andere definierst. --> http://search.msdn.microsoft.com/search/info.aspx?u=http%3A%2F%2Fmsdn.microsoft.com%2Flibrary%2Fen-us%2Fvccore%2Fhtml%2FvcrefCompilerErrorC2601.asp&n=1&na=51&c=4&fp=3&view=msdn&st=b&na=82&qu=C2601&s=1&swc=4

    Also einfach mal alle { } Klammern ?berpr?fen.
  6. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!