c/c++ problem
lima-city → Forum → Programmiersprachen → C/C++ und D
backen
break
datei
error
farbe
fehler
flip
front
funktion
gel
globalen fensters
konvertierung
message
null
puffer
release
studio
tippfehler
titelleiste
warnung
-
so die ersten probleme sind beseitigt... musste nur noch direct x einbinden...
?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 -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
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.
-
hallo????? also ?brigens das mit den datzein hat nix ge?ndert...
-
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. -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage