Verstehe C-Programm nicht

Hallöle,
also ich arbeite gerade ein C-Buch durch und bin jetzt bei Windows-Programmierung angekommen. Aber sonderlich aufschlussreich ist das ganze nicht. Es ist ein Beispielprogramm da und ein kleiner Text dazu, wofür die Funktion WinMain() ist. Mehr nicht. Ich hab das Programm einfach mal abgetippt.

1) Ich verstehe nur sehr wenig von dem Code. Dieser ist im Buchauch kaum kommentiert.

2) Das Programm funktoniert nicht mal.

Hier mal den Code:

[code]#include

HINSTANCE hInst = 0;
char szAppName[] = „Basis“;
char szTitle[100] = „Hello World!“;

BOOL InitApplication();
BOOL InitInstance (int);
LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM);

int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
MSG msg;
hInst = hInstance;

if ( !InitApplication() )
{
return FALSE;
}
if ( !InitInstance (nCmdShow) )
{
return FALSE;
}

while ( GetMessage (&msg, NULL, 0, 0) )
{
TranslateMessage (&msg);
DispatchMessage (&msg);
}

return (msg.wParam);
}

BOOL InitApplication ()
{
WNDCLASSEX wc;

wc.cbSize = sizeof (WNDCLASSEX);
wc.style = CS_HREDRAW | CS_VREDRAW;
wc.lpfnWndProc = (WNDPROC)WndProc;
wc.cbClsExtra = 0;
wc.cbWndExtra = 0;
wc.hInstance = hInst;
wc.hIcon = LoadIcon (NULL, IDI_APPLICATION);
wc.hCursor = LoadCursor (NULL, IDC_ARROW);
wc.hbrBackground = (HBRUSH)GetStockObject (WHITE_BRUSH);
wc.lpszMenuName = NULL;
wc.lpszClassName = szAppName;
wc.hIconSm = LoadIcon (NULL, IDI_APPLICATION);

return RegisterClassEx (&wc);
}

BOOL InitInstance (int nCmdShow)
{
HWND hWnd = CreateWindow (
szAppName, szTitle, WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, NULL, NULL, hInst, NULL );

if (!hWnd)
{

return (FALSE);
}

ShowWindow (hWnd, nCmdShow);
UpdateWindow (hWnd);

return (TRUE);
}[/code]

Die Fehlermeldung:

[QUOTE]Basis1.obj : error LNK2001: Nichtaufgeloestes externes Symbol _WndProc@16
Debug/windows.exe : fatal error LNK1120: 1 unaufgeloeste externe Verweise[/QUOTE]

Das Programm soll eigentlich ein Fenster mit weißem Hintergrund und dem Text „Das erste Windows-Programm“ ausgeben.

Also, ich verstehe den Code an sich nur sehr schlecht. Dann verstehe ich nicht, warum dieser Text ausgegeben werden soll, diese Zeichenkette taucht doch nirgendswo im Programm auf?
Und dann sollte man das Programm noch umbedingt mit dem Namen ‚Basis1.c‘ speichern, wieso denn das?

Es wäre halt toll, wenn mir jemand den Code genauer erklären und die Fehlerquelle sagen könnte.

MfG Pentium3-User

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.