www.codeworx.org/directx_tuts/ Einführung in DirectSound Teil 2

Einführung in DirectSound Teil 2
Datum: 31.8.00
Autor: Tim-Oliver Husser

Windows
Wie man mit der wie in Teil 1 beschrieben konfigurierten IDE ein kleines Windows-Programm schreibt, soll hier nicht noch einmal erklärt werden. Nachzulesen ist es im 2. Teil des Tutorials für DirectDraw.

Das Hauptprogramm
Ich gehe jetzt von dem Beispielprogramm aus, wie es im 2. Teil des DirectDraw-Tutorials beschrieben ist, und erkläre nur noch die Veränderungen.
Zuerst gibts zwei neue Include-Befehle, dann ersetzen wir einmal die beiden Define-Zeilen und führen die Variable running ein (siehe DirectDraw-Tutorial Teil 3):

#include <dsound.h>
#include <mmsystem.h>
#define WindowTitle "DirectSound-Tutorial"
#define WindowClassName "DSWinClass"
bool running;

Weiter gehts in der WinMain. Hinter der Zeile mit dem UpdateWindow kommt folgendes (den Rest der Funktion bitte ersetzen):

DSoundInit (hwnd);
LoadWave ("ctmelody.wav");
running=true;
while(running)
{
   if (PeekMessage(&msg,NULL,0,0,PM_REMOVE))
   {
      if (msg.message == WM_QUIT) break;
      TranslateMessage(&msg);
      DispatchMessage(&msg);
   }
}
ReleaseDSound ();
return msg.wParam ;
}

In diesem Code kommen drei neue Funktionen vor, die wir weiter unten noch schreiben müssen, nämlich DSoundInit, LoadWave und ReleaseDSound.

Die Funktion WndProc ersetzen wir einfachheitshalber komplett. Und zwar durch:

LONG FAR WINAPI WndProc (HWND hwnd , UINT message , UINT wParam , LONG lParam)
{
   switch (message)
   {
      case WM_KEYDOWN:
      {
         switch (wParam)
         {
            case VK_ESCAPE:
            {
               running=false;
               return 0;
            }
            case VK_F1:
            {
               PlayWave ();
               return 0;
            }
            case VK_F2:
            {
            StopWave ();
            return 0;
            }
         } break;
      }

      case WM_DESTROY:
      {
         PostQuitMessage (0) ;
         return 0 ;
      } break;
   } // switch (message)
   return DefWindowProc (hwnd , message , wParam , lParam) ;
} // WndProc

Auch hier sind wieder zwei neue Funktionen: PlayWave und StopWave.

Das ist auch schon das Grundgerüst, das wir brauchen! In den weiteren Teilen des Tutorials beschreibe ich die fünf neuen Funktionen.