Tutorialproblem ==> WinAPI-Unterschied bezüglich Dev-C++
-
Ich habe mal eines der vorzüglichen Tutorials von http://www.c-plusplus.net angetan. Alles ist soweit klar.
Aber es gibt ein Problem mit der Syntax. Vermutlich liegt das daran das dass Tutorials mit VC++ geschrieben wurde und wie ich weiß gibt es zwischen jedem Compiler gewisse Unterschiede.Nun, der bisherige Code ist folgender:
#include <windows.h> LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM); //Deklaration der Windows-Nachrichten-Prozedur int WINAPI WinMain (HINSTANCE hI, HINSTANCE hPrI, PSTR szCmdLine, int iCmdShow) { char szName[] = "Fensterklasse"; WNDCLASS wc; wc.style = CS_HREDRAW | CS_VREDRAW; // CS = "class style" wc.lpfnWndProc = WndProc; wc.cbClsExtra = 0; wc.cbWndExtra = 0; wc.hInstance = hI; wc.hIcon = LoadIcon (NULL, IDI_WINLOGO); wc.hCursor = LoadCursor (NULL, IDC_ARROW); wc.hbrBackground = (HBRUSH) GetStockObject (BLACK_BRUSH); wc.lpszMenuName = NULL; wc.lpszClassName = szName; RegisterClass (&wc); HWND hwnd = CreateWindow (szName, "", WS_SYSMENU | WS_THICKFRAME, 0, 0, 200, 100, NULL, NULL, hI, NULL); ShowWindow (hwnd, iCmdShow); UpdateWindow (hwnd); // Nachrichten-Schleife MSG msg; while (GetMessage (&msg, NULL, 0, 0)) { TranslateMessage (&msg); DispatchMessage (&msg); } return msg.wParam; } // Windows-Nachrichten-Prozedur LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) { HDC hdc; PAINTSTRUCT ps; switch (message) { case WM_PAINT: hdc = BeginPaint (hwnd, &ps); TextOut (hdc, 20, 20, "Ich bin ein Fenster.", 20); EndPaint (hwnd, &ps); return 0; case WM_DESTROY: PostQuitMessage (0); return 0; } return DefWindowProc (hwnd, message, wParam, lParam); }
Damit hat er ein Problem:
wc.hbrBackground = (HBRUSH) GetStockObject (BLACK_BRUSH);
TextOut (hdc, 20, 20, "Ich bin ein Fenster.", 20);
Die Fehlerausgabe des Compilers ist folgende:
> [Linker error] undefined reference to
GetStockObject@4' << \> [Linker error] undefined reference to
TextOutA@20' <<
> C:\Programme\Programmieren\Dev-Cpp\Projects\use\Prompter\Makefile.win [Build Error] [Prompter.exe] Error 1 <<Ich benutze Dev-Cpp 4.9.8.0.
Hoffentlich kann mir jemand helfen. Sicherlich liegt das nur an der Syntax(wie immer).
-
hat nichts mit dem code zu tun sondern den linkereinstellungen.
-
und zwar -lgdi32 dem linker mitangeben
-
und zwar -lgdi32 dem linker mitangeben
Das müsste automatisch eingestellt sein bei einem Win-Projekt!