Odtwarzanie dzwieku z zasobów nie dziala!

0

Uzywam nastepujacej funkcji

PlaySound('MUZYKA', HInstance, SND_ASYNC + SND_RESOURCE);

Dodam ze dzwiek o nazwie MUZYKA w zasobach jest. Probowalem zarownow w MIDI i MP3. Niestety Muzyka z zasobów nie jest odtwarzana. Dlaczego?

0
bronexis napisał(a):

Dodam ze dzwiek o nazwie MUZYKA w zasobach jest. Probowalem zarownow w MIDI i MP3. Niestety Muzyka z zasobów nie jest odtwarzana. Dlaczego?

Bo coś spierniczyłeś.
WinApi ma funkcje do diagnozowania błędów. Użyj ich.
SND_ASYNC + SND_RESOURCE - kto cie uczył dodawać flag? Poczekajmy aż jakieś się przysłonią i będziesz płakać że nie działa... Używa się OR a nie dodawania.

1

Tylko WAV możesz... żadne MP3 przez zasoby w ten sposób nie zrobisz.

0

Tak rowniez probowalem i dalej nic...

Z tego co patrzylem na google wiele osob ma podobny problem przy tej funkcji i nikt nie wie jak temu zaradzic

0

Sprawdzilem takze dla pliku wav. Rowniez nic. Nie odtwarza go...

0
bronexis napisał(a):

Sprawdzilem takze dla pliku wav. Rowniez nic. Nie odtwarza go...

Pod ŻADNYM POZOREM nie sprawdzaj jaki błąd wywaliła ta funkcja!!! To że o tym napisałem znaczy że masz tego NIE robić!

0

Polecam skorzystać z biblioteki bass.dll. Wkompilowanie jej z pomocą modułu dllloader.pas i użycie z zasbów jak i jej inicjalizacje oraz wczytanie użytych funkcji zrób już sobie sam. Nie będę wklejał całego gotowca żeby Ciebie nauczyć samodzielności. Nazewnictwo jest po polsku, bo pisałem to dawno robiąc na szybko grę w "5x5". Więcej informacji znajdziesz na stronie projektu tej biblioteki, w dokumentacj oraz w przykładach. Natomiast paczkę z dllloader.pas postowałem całkiem niedawno w tym dziale, także poszukaj tego posta jeśli nie wygooglujesz jej.

//...
var
  Chn : DWord;
  ResSize : Integer;
  MyResource : HRSRC;
  MyGlobal : HGLOBAL;
  PResource : Pointer;
//...
procedure OdtwarzajDzwiekZasoby(NazwaZasobu : PChar; CzyLoop : boolean);
var
  Loopowanie : integer;
  SoundResourceName : PChar;
begin
  if (CzyLoop = True) then
  begin
    Loopowanie := BASS_SAMPLE_LOOP;
  end
  else
  begin
    Loopowanie := 0;
  end;
  SoundResourceName := NazwaZasobu;
  MyResource := FindResource(HInstance, SoundResourceName, RT_RCDATA);
  if MyResource = 0 then
  begin
    MessageBox(Application.Handle,
      'Nie można znaleźć zasobu z dźwiękiem!',
      PChar(Application.Title), MB_OK + MB_ICONWARNING);
    Exit;
  end;
  MyGlobal := LoadResource(HInstance, MyResource);
  PResource := LockResource(MyGlobal);
  ResSize := SizeOfResource(HInstance, MyResource);
  Chn := BASS_StreamCreateFile(True, PResource, 0, ResSize, Loopowanie);
  BASS_ChannelPlay(Chn, False);
  FreeResource(MyGlobal);
end;

procedure OdtwarzajModulZasoby(NazwaZasobu : PChar; CzyLoop : boolean);
var
  Loopowanie : integer;
  ModuleResourceName : PChar;
begin
  if (CzyLoop = True) then
  begin
    Loopowanie := BASS_SAMPLE_LOOP;
  end
  else
  begin
    Loopowanie := 0;
  end;
  ModuleResourceName := NazwaZasobu;
  MyResource := FindResource(HInstance, ModuleResourceName, RT_RCDATA);
  if MyResource = 0 then
  begin
    MessageBox(Application.Handle,
      'Nie można znaleźć zasobu z modułem muzycznym!',
      PChar(Application.Title), MB_OK + MB_ICONWARNING);
    Exit;
  end;
  MyGlobal := LoadResource(HInstance, MyResource);
  PResource := LockResource(MyGlobal);
  ResSize := SizeOfResource(HInstance, MyResource);
  Chn := BASS_MusicLoad(True, PResource, 0, ResSize, Loopowanie, 0);
  BASS_ChannelPlay(Chn, False);
  FreeResource(MyGlobal);
end;
//...

1 użytkowników online, w tym zalogowanych: 0, gości: 1