Hoe: engine-callbacks gebruiken
U kunt de XAudio2-clientcode van engine-gebeurtenissen melden door een exemplaar van een klasse te registreren dat de IXAudio2EngineCallback interface met de XAudio2-engine implementeert. Hierdoor kan de XAudio2-clientcode bijhouden wanneer audioverwerking plaatsvindt en wanneer de engine opnieuw moet worden opgestart in het geval van een kritieke fout.
Een engine-callback gebruiken
Met de volgende stappen registreert u een object voor het afhandelen van engine-gebeurtenissen.
Maak een klasse die erft van de IXAudio2EngineCallback interface.
Alle methoden van IXAudio2EngineCallback zijn puur virtueel en moeten worden gedefinieerd. De methode van belang in dit voorbeeld is IXAudio2EngineCallback::OnCriticalError, waarmee een vlag wordt ingesteld om de hoofdspellus te signaleren dat er een kritieke fout heeft plaatsgevonden. De overige methoden, IXAudio2EngineCallback::OnProcessingPassStart en IXAudio2EngineCallback::OnProcessingPassEnd, zijn stubs in dit voorbeeld.
class EngineCallback : public IXAudio2EngineCallback { void OnProcessingPassEnd () {} void OnProcessingPassStart() {} void OnCriticalError (HRESULT Error) {} };
Gebruik XAudio2Create om een exemplaar van de XAudio2-engine te maken.
if ( FAILED(hr = XAudio2Create( &pXAudio2, 0, XAUDIO2_DEFAULT_PROCESSOR ) ) ) return hr;
Gebruik IXAudio2::RegisterForCallbacks om de callback van de engine te registreren.
pXAudio2->RegisterForCallbacks( &engineCallback );
Als u de engine-callback niet meer nodig heeft, gebruikt u IXAudio2::UnregisterForCallbacks.
pXAudio2->UnregisterForCallbacks( &engineCallback );
Verwante onderwerpen