Prob mit C++-Spiel
-
Also ich hab ein Problem. Ich bin gerade dabei ein Spiel zu programmieren und da hab ich einen Dialog in Microsoft Visual C++ erstellt. Im DIalog stehen 7 Radiobuttons 7 Bilder ein OK und ein Cancel- Button. Ich hab den Dialog in den Quellcode reingeschrieben und die 7 bilder sollen bewirken dass wenn man ein radiobutton aktiviert, dass das BIld als Hintergrundbild verwendet wird.
Und jetzt meine Frage warum funkt dieser Quellcode nicht???public: HRESULT new_BG ... BOOL CALLBACK konfigurationsdialog( HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam) { int i; switch (uMsg) { case WM_INITDIALOG: CheckDlgButton(hwndDlg, 5000+i, BST_CHECKED || BST_UNCHECKED); return TRUE; case WM_COMMAND: if(wParam == IDOK) { { HRESULT display::new_BG() { HRESULT hr; LPDIRECTDRAWPALETTE pal = 0; char fname[20]; if (Background) delete Background; hr = Background->DrawBitmap( "w%d.bmp", catch_nettobreite, catch_nettohoehe); if (hr < 0 ) return hr; } } } if(wParam == IDCANCEL) { EndDialog(hwndDlg, wParam); return TRUE; } return FALSE; } } ... case ID_EINSTELLUNGEN_KONFIGURATION: DialogBox( catch_instance, MAKEINTRESOURCE( IDD_KONFIGURATION), catch_window, konfigurationsdialog); return 0;
danke im vorraus
mfg TheDome
-
TheDome schrieb:
hr = Background->DrawBitmap( "w%d.bmp", catch_nettobreite, catch_nettohoehe);
Die Bitmap-Datei heißt wirklich "w%d.bmp"? Für alle 7 Bilder? Ich würde ja eher vermuten, daß du mehrere Dateien "w0.bmp" bis "w7.bmp" hast - und da mußt du den gewünschten Dateinamen erst per sprintf() o.ä. zusammensetzen.
PS: Außerdem macht es wenig Sinn, erst das Objekt "Background" zu löschen und danach auf seine Methoden zuzugreifen (sowas nennt man im allgemeinen Sprachgebrauch "Leichenfledderei" - und unter C++ Experten "undefined behaviour").
-
aso ok aber bei mir kommt bei dem
if(wParam == IDOK)
{
{
HRESULT display::new_BG()
{einmal "Diese Zeile enthält eine '{', die keine Entsprechung hat"
und einmal "error C2601: 'display::new_BG': Lokale Funktionsdefinitionen sind unzulässig" weiß jemand warum???
-
Ja - du versuchst eine Methode lokal im Inneren deiner if-Anweisung zu definieren, das ist in C++ nicht erlaubt. An der Stelle könntest du die Funktion höchstens aufrufen.
-
aso dass ist mein erstes spiel und klingt vllt etwas dumm aber wie macht man das??
-
Dann solltest du erstmal die Sprache lernen, bevor du sie für ein größeres Projekt einsetzen willst.