Warnung, aber warum???
-
Hallo,
ich habe einen "kleinen" Code bei dem eine Warnung ausgegeben wird, ich weis nicht warum, könnt ihr mir eine erklärung geben?//ddraw.lib, dxguid.lib einbinden und min. DX8SDK // Headerdatei einbinden #include <windows.h> #include <ddraw.h> //Auflösung/Farbtiefe wählen #define AufloesungX 800 #define AufloesungY 600 #define Farbtiefe 8 //Prototypen============================================================================================= // Anwendungsfenster erzeugen HWND CreateMainWindow(HINSTANCE hInstance); //Callback Funktion zur Nachrichtenbehandlung LRESULT CALLBACK MessageHandler(HWND Fensterhandle, UINT msg, WPARAM wparam, LPARAM lparam); // Fehlermeldung erzeugen BOOL Error(char* Fehlermeldung); // DirectDraw-Objekte initialisieren BOOL InitDirectDraw(HWND Fensterhandle); // Objekte/Speicher freigeben void CleanUpDirectDraw(void); //Variablen============================================================================================== //DirectDrawObject LPDIRECTDRAW7 DirectDraw7Objekt = NULL; //DirectDrawPrimäreOberfläche LPDIRECTDRAWSURFACE7 PrimaereOberflaeche=NULL; //StrukturOberflächenbeschreibung DDSURFACEDESC2 Oberfaechenbeschreibung; // Der Fensterhandle HWND Fensterhandle = NULL; // Der DeviceContextHandle HDC DeviceContextHandle; //Verweis auf Paintstruct PAINTSTRUCT ps; // Windows main-Funktion int WINAPI WinMain(HINSTANCE hInstance, // Handle der Programminstanz HINSTANCE hPrevInstance, // Handle der letzten Instanz LPSTR lpCmdLine, // Kommandozeile int nCmdShow) // Art wie das Fenster angezeigt werden soll { // Fenster erzeugen und Handle speichern Fensterhandle = CreateMainWindow(hInstance); // Wenn der Rückgabewert 0 ist, ist ein Fehler aufgetreten if(0 == Fensterhandle) { return Error("Fenster konnte nicht erzeugt werden"); } // DirectDraw initialisieren if(!InitDirectDraw(Fensterhandle)) { return FALSE; } // DC für die Oberfläche anfordern if(FAILED(PrimaereOberflaeche->GetDC(&DeviceContextHandle))) { Error("DC ist nicht verfügbar"); } // Struktur, in der Informationen zur Nachricht gespeichert werden MSG msg; // Diese Schleife läuft bis die Nachricht WM_QUIT empfangen wird while(GetMessage(&msg,NULL,0,0)) { // Nachricht an die Callbackfunktion senden TranslateMessage(&msg); DispatchMessage(&msg); } // Rückgabewert an Windows return 0; } // Diese Funktion wird von Windows aufgrufen, wenn eine Nachricht // für Ihr Programm vorliegt LRESULT CALLBACK MessageHandler(HWND Fensterhandle, UINT msg, WPARAM wParam, LPARAM lParam) { // testen, um welche Nachticht es sich handelt switch(msg) { case WM_PAINT: BeginPaint(Fensterhandle,&ps); DeviceContextHandle = GetDC(Fensterhandle); // Textfarbe und Ausgabemodus setzen SetTextColor(DeviceContextHandle,RGB(255,255,255)); SetBkMode(DeviceContextHandle,TRANSPARENT); // Text und Ellipse ausgeben TextOut(DeviceContextHandle,20,200, "c++ rules",9); // Wichtig !!! Device Context wieder freigeben PrimaereOberflaeche->ReleaseDC(DeviceContextHandle); EndPaint(Fensterhandle,&ps); break; case WM_KEYDOWN: if(wParam==VK_ESCAPE) { DestroyWindow(Fensterhandle); break; } // wenn das Fenster geschlossen wird, eine Nachricht senden, // die das Programm beendet case WM_DESTROY: CleanUpDirectDraw(); PostQuitMessage(0); return 0; break; } // Wenn wir uns nicht um die Nachricht gekümmert haben // wird sie an die Standardnachrichtenverarbeitung von Windows // geschickt return (DefWindowProc(Fensterhandle, msg, wParam, lParam)); } /*====================================================================================================== ==========================================Funktion Fensterstellung====================================== ======================================================================================================*/ HWND CreateMainWindow(HINSTANCE hInstance) { WNDCLASSEX wndClass; // WNDCLASSEX Struktur // Struktur initialisieren wndClass.cbSize = sizeof(WNDCLASSEX); // Größe angeben (nie vergessen!) wndClass.style = CS_DBLCLKS | CS_OWNDC | CS_HREDRAW | CS_VREDRAW; // Standard Stile wndClass.lpfnWndProc = MessageHandler; // Die Callback Funktion angeben wndClass.cbClsExtra = 0; // Zusätzliche Angaben, wird nicht benötigt wndClass.cbWndExtra = 0; // Zusätzliche Angaben, wird nicht benötigt wndClass.hInstance = hInstance; // Anwendungsinstanz wndClass.hbrBackground = (HBRUSH)GetStockObject(BLACK_BRUSH);// Weisser Pinsel wndClass.hCursor = LoadCursor(NULL, IDC_ARROW); // Normaler Cursor wndClass.lpszMenuName = NULL; // Das Fenster hat kein Menü wndClass.lpszClassName = "WindowClass"; // Der Name der Klasse wndClass.hIcon = LoadIcon(NULL, IDI_WINLOGO); // Windows Logo wndClass.hIconSm = LoadIcon(NULL, IDI_WINLOGO); // Windows Logo RegisterClassEx(&wndClass); return CreateWindowEx(NULL, // Keine erweiterten Stile nutzen "WindowClass", // Klassenname "DKEngine v1Alpha1", // Fenstertitel WS_POPUP | // Fenster WS_VISIBLE, // Eigenschaften 0, 0, AufloesungX, AufloesungY,// Anfangsposition und Größe NULL, // Handle des Elternfensters NULL, // Handle des Menüs hInstance, // Anwendungsinstanz NULL); // wird nicht benötigt } /*====================================================================================================== =====================================Funktion DirectDraw intitialisieren================================ ======================================================================================================*/ int InitDirectDraw(HWND Fensterhandle) { //DirectDrawObjekt if(FAILED(DirectDrawCreateEx(NULL,(LPVOID*)&DirectDraw7Objekt,IID_IDirectDraw7,NULL))) { return Error("DirectDraw-Objekt konnte nicht erzeugt werden"); } //Cooperatiosebene if(FAILED(DirectDraw7Objekt->SetCooperativeLevel(Fensterhandle,DDSCL_FULLSCREEN | DDSCL_EXCLUSIVE))) { return Error("DirectDraw-Kooperationsebene konnte nicht gesetzt werden werden"); } //Auflösung/Farbtiefe DirectDraw if(FAILED(DirectDraw7Objekt->SetDisplayMode(AufloesungX,AufloesungY,Farbtiefe,0,0))); //InitundGrößefestlegen ZeroMemory(&Oberfaechenbeschreibung,sizeof(Oberfaechenbeschreibung)); Oberfaechenbeschreibung.dwSize =sizeof(Oberfaechenbeschreibung); Oberfaechenbeschreibung.dwFlags=DDSD_CAPS; //Es soll eine Primäre Oberfläche sein Oberfaechenbeschreibung.ddsCaps.dwCaps = DDSCAPS_PRIMARYSURFACE | DDSCAPS_VIDEOMEMORY; //Primäre Oberfläche Anlegen if(FAILED(DirectDraw7Objekt->CreateSurface(&Oberfaechenbeschreibung,&PrimaereOberflaeche,NULL))) { MessageBox(0,"Primäre DirectDraw-Oberfläche konnte nicht erzeugt werden werden","Fehler",MB_OK); return 0; } return TRUE; } /*====================================================================================================== ==========================================Funktion DirectDraw löschen=================================== ======================================================================================================*/ void CleanUpDirectDraw(void) { if(NULL != PrimaereOberflaeche) { PrimaereOberflaeche->Release(); PrimaereOberflaeche = NULL; } if(NULL != DirectDraw7Objekt) { DirectDraw7Objekt->Release(); DirectDraw7Objekt = NULL; } } /*====================================================================================================== ==========================================Funktion Fehlermeldung======================================== ======================================================================================================*/ BOOL Error(char* Fehlermeldung) { // als MessageBox MessageBox(0,Fehlermeldung,"Error",MB_OK); // und in das Ausgabefenster OutputDebugString(Fehlermeldung); OutputDebugString("\n"); return FALSE; }
-
Müssen wir jetzt alle Deinen Code selber compilen und hoffen, das wir dieselben Warnungen bekommen oder sagst Du uns auch, was für Warnungen da bei Dir kommen?
-
Sorry
, hab ich vergessen, bitte:
warning C4390: ';' : empty controlled statement found; is this the intent?
der Fehler kommt auch wen ich DDSURFACEDESC2 Oberfaechenbeschreibung; in der Funktion: int InitDirectDraw(HWND Fensterhandle) kompiliere.
-
In welcher Zeile kommt denn die Warnung?
So aus dem Stegreif hat diese Zeile etwas sehr verdächtiges an sich:
if(FAILED(DirectDraw7Objekt->SetDisplayMode(AufloesungX,AufloesungY,Farbtiefe,0,0)));
-
Das würde zur Beschreibung passen
Ist aber erlaubt, deswegen auch nur eine Warnung, die dich fragt, ob das Absicht ist (weil es nicht viel Sinn macht)
-
if(FAILED(DirectDraw7Objekt->SetDisplayMode(AufloesungX,AufloesungY,Farbtiefe,0,0)));
ohh dasif macht ja gar kein sin. Mein Fehler, aber doch verwunderlich das er keinen ERROR anzeigt
-
Gott der 2. schrieb:
aber doch verwunderlich das er keinen ERROR anzeigt
Wieso? Ist doch vom Syntax her nicht falsch - solche Nullanweisungen sind erlaubt, machen aber so zumindest keinen Sinn
-
empty controlled statement found; is this the intent?
Übersetzung:
Leere kontrollierte Aussage gefunden; Ist das Absicht?Er fragt Dich lediglich, ob das Dein Ernst ist... falsch ist es nicht, macht aber (wie mehrfach hier erwähnt) wirklich keinen Sinn, das weiß der Compiler und fragt Dich halt...
-
ich sollte mir ma ein deutsches c++ zulegen