PlaySound(...) spielt kein Sound



  • Eigentlich ist es nur ein kurzes Codeteil aber ...

    case ID_PLAY //PLay Button
    { 
      PlaySound("wndw.wav",0,SND_ASYNC|SND_NODEFAULT|SND_RESOURCE);
    }
    

    Aber es wird kein Sound abgespielt (Habe die Sounddatei in den Projekt Ordner und
    wo die .exe Datei liegt reingepackt aber der Sound wird nicht abgespielt 😞



  • Du solltest dir die Doku zu PlaySound noch einmal in Ruhe durchlesen.
    Als ersten Parameter übergibst du einen Dateinamen, für das Modulhandle 0 und mit dem Flag SND_RESOURCE weist du PlaySound an, in der (nicht vorhandenen) Instanz nach dem Sound zu suchen -> kann nicht funktionieren.

    Du solltest SND_RESOURCE durch SND_FILENAME ersetzen.



  • Es geht DANKEEEEEEEEEEEEEEEEEE! 😉



  • Aber noch eine kurze Frage

    case WM_COMMAND:
        {
          switch (wParam)
          {
    
    	  case ID_PLAY:
    		  {
    		    PlaySound("wndw.wav",0,SND_ASYNC|SND_FILENAME);
    		  }
    
            case ID_BTN_BEENDEN:
            {
              int Resultat; // Rückgabewert der Messagebox
    
              // Messagebox für Sicherheitsabfrage
              Resultat = MessageBox (hWnd, "Wirklich beenden?",
                                     "Programm beenden",
                                     MB_YESNO | MB_ICONQUESTION);
    
              if (Resultat == IDYES)
              {
    
                PostQuitMessage (0);
                return (0);
    
              }
    
              // Nein, also ganz normal weiter
              return (0);
    
            }
          } break;
        } break;
    

    Hier wird sofort nach dem PlayButton die Messagebox ausgegeben
    wie behebe ich das ?



  • Ich wollte es eigentlich noch dazuschreiben, habe aber gedacht, es handele sich um einen Copy & Paste - Fehler:
    Jeder case-Zweig muss mit einem break/return beendet werden, ansonsten wird in den nächsten Zweig gesprungen (was man manchmal durchaus möchte, hier ist es aber ein Fehler):

    case ID_PLAY:
        PlaySound("wndw.wav",0,SND_ASYNC|SND_FILENAME);
        break;
    

    Die Klammern brauchst du nur, wenn Variablen innerhalb des Zweigs deklariert werden (neuer Scope).



  • 👍


Anmelden zum Antworten