Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

Könnt ihr mir vlt. helfen

Dieser Quelltext kann ich nicht kopieren

es lässt sich nicht kompilieren es steht :

[Linker error] undefined reference to `WndProc@16'

ld returned 1 exit status

C:\Dev-Cpp\Makefile.win [build Error] [Fenster.exe] Error 1

Wisst ihr vlt. was zu tun ist?

oder was falsch ist?:confused:

Danke im Voraus:confused:

#include <windows.h>

#include <stdlib.h>

#include <time.h>

#define PIXEL 1

#define LINIE 2

#define RECHTECK 3

#define VIELECK 4

#define ELLIPSE 5

#define INVALIDATE 6

#define BEENDEN 7

HWND bPixel, bLinie, bRechteck, bVieleck, bEllipse, bInvalidate, bBeenden;

LRESULT CALLBACK WndProc( HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam );

LPCSTR MainClassName = "Malen und Zeichnen";

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,

PSTR szCmdLine, int iCmdShow)

{

WNDCLASSEX wc;

HWND hWnd;

MSG wmsg;

wc.cbSize = sizeof(WNDCLASSEX);

wc.style = 0;

wc.lpfnWndProc = WndProc;

wc.cbClsExtra = 0;

wc.cbWndExtra = 0;

wc.hInstance = hInstance;

wc.hIcon = LoadIcon(GetModuleHandle(NULL), IDI_APPLICATION);

wc.hCursor = LoadCursor(NULL, IDC_CROSS);

wc.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);

wc.lpszMenuName = MainClassName;

wc.lpszClassName = MainClassName;

wc.hIconSm = LoadIcon(GetModuleHandle(NULL), IDI_APPLICATION);

if(!RegisterClassEx(&wc))

{

MessageBox(NULL, "Windows Registrations Fehler", "Error!",

MB_ICONEXCLAMATION | MB_OK);

return 0;

}

hWnd = CreateWindowEx(WS_EX_CLIENTEDGE, MainClassName,

"Gerätekontext Beispiel",

WS_SYSMENU | WS_VISIBLE,

CW_USEDEFAULT, CW_USEDEFAULT,

400, 300, NULL, NULL, hInstance, NULL);

bPixel = CreateWindow("button", "Pixel", WS_CHILD | WS_VISIBLE |

BS_DEFPUSHBUTTON, 310, 0, 80, 30,

hWnd, (HMENU)PIXEL, hInstance, NULL);

bLinie = CreateWindow("button", "Linie", WS_CHILD | WS_VISIBLE |

BS_DEFPUSHBUTTON, 310, 30, 80, 30,

hWnd, (HMENU)LINIE, hInstance, NULL);

bRechteck = CreateWindow("button", "Rechtecke", WS_CHILD |

WS_VISIBLE | BS_DEFPUSHBUTTON,

310, 60, 80, 30, hWnd,

(HMENU)RECHTECK, hInstance, NULL);

bVieleck = CreateWindow("button", "Vielecke", WS_CHILD |

WS_VISIBLE | BS_DEFPUSHBUTTON,

310, 90, 80, 30, hWnd,

(HMENU)VIELECK, hInstance, NULL);

bEllipse = CreateWindow("button", "Ellipse", WS_CHILD |

WS_VISIBLE | BS_DEFPUSHBUTTON,

310, 120, 80, 30, hWnd,

(HMENU)ELLIPSE, hInstance, NULL);

bEllipse = CreateWindow("button", "Säubern", WS_CHILD |

WS_VISIBLE | BS_DEFPUSHBUTTON,

310, 150, 80, 30, hWnd,

(HMENU)INVALIDATE, hInstance, NULL);

bInvalidate = CreateWindow("button", "Säubern", WS_CHILD |

WS_VISIBLE | BS_DEFPUSHBUTTON,

310, 150, 80, 30, hWnd,

(HMENU)INVALIDATE, hInstance, NULL);

bBeenden = CreateWindow("button", "Beenden", WS_CHILD |

WS_VISIBLE | BS_DEFPUSHBUTTON,

310, 180, 80, 30, hWnd,

(HMENU)BEENDEN, hInstance, NULL);

if(hWnd == NULL)

{

if(MessageBox(NULL, "Fehler beim Erstellen des Fensters!",

"Error!", MB_ICONEXCLAMATION | MB_OK) == IDOK);

return 0;

}

while(GetMessage(&wmsg,NULL,0,0))

{

TranslateMessage(&wmsg);

DispatchMessage(&wmsg);

}

return wmsg.wParam;

}

Geschrieben

Du hast die Funktion WndProc deklariert, aber du hast sie nicht definiert. Sie fehlt schlicht und einfach.

Also wie meinst du definiert kannst du mier aufschreiben

wo ich das definieren muss

?

pls.

Geschrieben
Also wie meinst du definiert

Das hier ist eine Deklaration, in C sagt man auch Prototyp:

LRESULT CALLBACK WndProc( HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam );
Damit sagst du nur, dass es die Funktion gibt. Du musst in deinem Code auch noch festlegen, was die Funktion tut. Das ist die Definition:
LRESULT CALLBACK WndProc( HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam )
{
// Hier kommt der Code der Funktion hin
}[/code]

kannst du mier aufschreiben

wo ich das definieren muss

Irgendwo in deinem Programm, außerhalb der anderen Funktion(en).
Geschrieben

Das hier ist eine Deklaration, in C sagt man auch Prototyp:

LRESULT CALLBACK WndProc( HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam );

Damit sagst du nur, dass es die Funktion gibt.

Du musst in deinem Code auch noch festlegen, was die Funktion tut. Das ist die Definition:

LRESULT CALLBACK WndProc( HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam )

{

// Hier kommt der Code der Funktion hin

}

Irgendwo in deinem Programm, außerhalb der anderen Funktion(en).

Danke viel mal für deine Hilfe;-)

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...