Hi!
Ich versuche mir von meinem neu erstellten IDirectSound8-Schnittstelle das Listener Interface zu holen.
Die DSBUFFERDESC ist mit DSBCAPS_CTRL3D | BufferDesc.guid3DAlgorithm bzw DS3DALG_DEFAULT gefüllt.
das letzte hr liefert mir allerdings immer ein E_NOINTERFACE.
Kann mir wer sagen was ich falsch mache?
|
C-/C++-Quelltext
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
// Listener
LPDIRECTSOUND3DLISTENER8 pListener;
// Die IDirectSound8-Schnittstelle
LPDIRECTSOUND8 pDSound;
// Primärer Soundpuffer
LPDIRECTSOUNDBUFFER pPrimaryBuffer;
HWND hWnd = GetForegroundWindow();
HRESULT hr;
DSBUFFERDESC BufferDesc;
ZeroMemory(&BufferDesc, sizeof(DSBUFFERDESC));
BufferDesc.dwSize = sizeof(DSBUFFERDESC);
BufferDesc.dwFlags = DSBCAPS_CTRL3D | DSBCAPS_PRIMARYBUFFER;
BufferDesc.dwBufferBytes = 0;
BufferDesc.dwReserved = 0;
BufferDesc.lpwfxFormat = NULL;
BufferDesc.guid3DAlgorithm = DS3DALG_DEFAULT;
// DirectSound-Schnittstelle generieren
hr = DirectSoundCreate8(NULL, &pDSound, NULL);
// Kooperationsebene setzen
hr = pDSound->SetCooperativeLevel(hWnd, DSSCL_PRIORITY);
// Primären Soundpuffer erstellen
hr = pDSound->CreateSoundBuffer(&BufferDesc, &pPrimaryBuffer, NULL);
// Listener holen
hr = pDSound->QueryInterface(IID_IDirectSound3DListener8, (LPVOID *)&pListener);
|