Problem mit Directdraw und C++

Ahoi habe folgendes Problem ich habe gerade mit Hilfe von http://www.husser.de/index.php?site=content&action=s…

folgenden Code erstellt und nun liefert VC++ 6.0 folgende Fehler :
Compilierung läuft…
Directx_2.cpp
Linker-Vorgang läuft…
Directx_2.obj : error LNK2001: Nichtaufgeloestes externes Symbol _DirectDrawCreateEx@16
Directx_2.obj : error LNK2001: Nichtaufgeloestes externes Symbol _IID_IDirectDraw7
Debug/Directx_2.exe : fatal error LNK1120: 2 unaufgeloeste externe Verweise
Fehler beim Ausführen von link.exe.

Directx_2.exe - 3 Fehler, 0 Warnung(en)

Hier der Code :

// Das Programm verändert die Bildauflösung auf 640x480 mit 265 Farben und Vollbild

#include
#include
#define WindowTitle „Direct Draw Tutorial“ // Legt den Namen für das Windows Fenster fest
#define WindowClassName „DDWinClass“ // Legt den Namen für die Fensterklasse fest

/*Die erste Variable ist ein Pointer (LP) auf DirectDraw-Objekt.
Die „7“ zeigt an, dass es sich um eine Methode von DirectX Version 7 handelt.
Über dieses Objekt werden wir, nachdem wir es erstellt haben, Zugriff auf alle Funktionen von
DirectDraw haben. Fast alle Funktionen von DirectDraw liefern einen Fehlercode zurück,
der angibt, ob alles problemlos geklappt hat, und wenn nicht, was schiefgegangen ist.
Diese Rückgabewerte haben den Datentyp HRESULT. */

LPDIRECTDRAW7 lpDirectDraw;
HRESULT ddrval;

LONG FAR WINAPI WndProc (HWND , UINT , UINT , LONG);

// Hier wird die Fensterklasse mit Daten gefüllt, bei Windows registriert und schließlich wird damit das neue Fenster aufgerufen
int WINAPI WinMain (HINSTANCE hInstance , HINSTANCE hPrevInstance , LPSTR lpCmdLine , int nCmdShow)
{
MSG msg ;
HWND hwnd ;
WNDCLASS wndclass ;

// Jetzt prüfen wir, ob schon eine Instanz des Programms vorhanden ist, also ob es schon läuft. Falls nicht, füllen wir die Fensterklasse mit Daten und registrieren sie.
if (!hPrevInstance)
{
wndclass.style = CS_HREDRAW | CS_VREDRAW ;
wndclass.lpfnWndProc = WndProc ;
wndclass.cbClsExtra = 0 ;
wndclass.cbWndExtra = 0 ;
wndclass.hInstance = hInstance ;
wndclass.hIcon = LoadIcon (NULL , IDI_APPLICATION) ;
wndclass.hCursor = LoadCursor (NULL , IDC_ARROW) ;
wndclass.hbrBackground = (HBRUSH)GetStockObject (LTGRAY_BRUSH) ;
wndclass.lpszMenuName = NULL ;
wndclass.lpszClassName = WindowClassName ;
RegisterClass (&wndclass) ;
}

// Jetzt erstellen wir das Fenster und zeigen es an:

hwnd = CreateWindow (WindowClassName ,
WindowTitle ,
WS_OVERLAPPEDWINDOW ,
CW_USEDEFAULT ,
CW_USEDEFAULT ,
CW_USEDEFAULT ,
CW_USEDEFAULT ,
NULL , NULL ,
hInstance , NULL) ;
ShowWindow (hwnd , nCmdShow) ;
UpdateWindow (hwnd) ;

// Neu: Jetzt erstellen wir das DirectDraw-Objekt
ddrval = DirectDrawCreateEx(NULL, (VOID**)&lpDirectDraw, IID_IDirectDraw7, NULL);
if (ddrval != DD_OK)
{
return (0);
}

/*Als ersten Parameter erwartet DirectDrawCreate einen Grafiktreiber, auf dem die Ausgabe
erfolgen soll. Mit NULL geben wir an, daß der primäre Treiber benutzt werden soll.
Als zweites übergeben wir die DirectDraw-Variable, in der das DirectDraw-Objekt erstellt
werden soll Die Methode erwartet einen Parameter vom Typ VOID**, also müssen wir lpDirectDraw
erst mit (VOID**) konvertieren. Das „IID_DirectDraw7“ gibt an, daß wir ein DirectDraw-Objekt
der Version 7 erstellen wollen. Der letzte Parameter hat noch keine Funktion. Er ist nur für
zukünftige Kompatibilitäten mit COM gedacht. Dann überprüfen wir noch den Rückgabewert.
Ist er ungleich DD_OK (=Operation erfolgreich), wird das Programm beendet.*/

/*Cooperative Level Als nächstes müssen wir Windows sagen, wieviel Freiheit wir für unser
Programm brauchen. Wir setzen den sogenannten Cooperative Level. Dies geschieht sofort nach
der Erstellung des DirectDraw-Objektes:*/

ddrval = lpDirectDraw->SetCooperativeLevel (hwnd, DDSCL_EXCLUSIVE | DDSCL_FULLSCREEN);
if (ddrval != DD_OK)
{
lpDirectDraw->Release();
lpDirectDraw = NULL;
return (0);
}

/* SetCooperativeLevel ist eine Methode des DirectDraw-Objektes.
Das erste Argument ist der Window-Handle des Hauptfensters.
Das zweite gibt den „Freiheitsgrad“ an. Die Einstellung DDSCL_EXCLUSIVE | DDSCL_FULLSCREEN
gibt an, daß wir eine Vollbildanwendung haben und das diese exklusiven Zugriff auf den
primären Grafikreiber haben soll. Möchten Sie ein DirectDraw-Programm im Fenster betreiben,
müssen Sie hier DDSCL_NORMAL angeben. Jetzt überprüfen wir noch den Rückgabewert. Ist dieser
ungleich DD_OK, wird die Methode Release des DirectDraw-Objektes aufgerufen, der Speicherplatz
freigegeben und das Programm beendet. Die Release-Methode ist eine Eigenart aller COM-Objekte,
zu denen auch das DirectDraw-Objekt zählt. Bei jeder Erstellung eines solchen Objektes wird
ein interner Zähler um eins hochgezählt. Erst beim Aufruf von Release wir der wieder erniedrigt
und wenn er bei Null angekommen ist, wird der Speicherplatz schließlich freigegeben.
Vergessen Sie diesen Aufruf einmal, wird sich Ihr Programm höchstwahrscheinlich ins ewige
Nirwana der Bits und Bytes begeben.

Display Mode
Als nächstes ändern wir die Grafikauflösung und die Farbtiefe auf die Werte, die wir brauchen.
In unserem Fall wollen wir uns einmal auf eine Auflösung von 640x480 mit 265 Farben beschränken.
Dazu brauchen wir die Methode SetDisplayMode des DirectDraw-Objektes, die wir nach
SetCooperativeLevel aufrufen:*/

ddrval = lpDirectDraw->SetDisplayMode (640, 480, 8, 0, 0);
if (ddrval != DD_OK)
{
lpDirectDraw->Release();
lpDirectDraw = NULL;
return (0);
}

/*SetDisplayMode erwartet für die ersten drei Parameter: die Auflösung in x-Richtung (640),
die in y-Richtung (480) und die Farbtiefe, angegeben in Bits Per Pixel (2^8 =265).
Der vierte Parameter gibt die „Refresh Rate“ an. Diese ist für uns unwichtig, also übergeben
wir eine „0“, was bewirkt, daß die Standard-Refresh-Rate verwendet wird. Der letzte Parameter
bestimmt, ob wir den „Mode 13“ verwenden wollen. Dies ist ein beschleunigter Grafikmodus für
eine Auflösung von 320x200x8. Da wir darüber liegen, muß auch dieser Parameter gleich „0“ sein.*/

// Was jetzt kommt, ist der wichtigste Teil eines Windows-Programmes: der „Message-Loop“.
// Hier werden die von Windows kommenden Fensternachrichten abgefangen und verarbeitet.

while(1)
{
if (PeekMessage(&msg,NULL,0,0,PM_REMOVE))
{
if (msg.message == WM_QUIT) break;
TranslateMessage(&msg);
DispatchMessage(&msg);
}
}

// Beim Programmende brauchen wir nur das, was Sie sowieso schon kennen: Die Release-Methode.

if (lpDirectDraw != NULL)
{
lpDirectDraw->Release();
lpDirectDraw = NULL;
}

return msg.wParam ;
} // WinMain

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

Hat sich mitlerweile (nach mehrstündigem google Studium erledigt) habe vergessen ddraw.lib und die dxguid.lib zu linken.