SelectObject Methode geht nicht
-
Ich bin gerade dabei die Windows-Programmierung mit c++ zu lernen. Und schon am Anfang geht alles schief.
Der folgende Code wird nicht compiliert und zwar mit folgendem Fehler:
error C2440: '=': 'HGDIOBJ' kann nicht in 'HBRUSH' konvertiert werden
error C2440: '=': 'HGDIOBJ' kann nicht in 'HPEN' konvertiert werdenIch arbeite mit Visual C++ 2003.net aber auch mit Visual C++ 6 kommt der selbe Fehler.
#include <windows.h> LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM); int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { WNDCLASS WndClass; WndClass.style =0; WndClass.cbClsExtra =0; WndClass.cbWndExtra =0; WndClass.lpfnWndProc = WndProc; WndClass.hInstance = hInstance; WndClass.hbrBackground = (HBRUSH) (COLOR_WINDOW+1); WndClass.hCursor = LoadCursor (NULL, IDC_ARROW); WndClass.hIcon = LoadIcon (NULL, IDI_APPLICATION); WndClass.lpszMenuName =0; WndClass.lpszClassName = "GDIProc1"; RegisterClass(&WndClass); HWND hWindow; hWindow = CreateWindow("Fenster1","Fenster", WS_OVERLAPPEDWINDOW, 0,0,600,460,NULL,NULL, hInstance,NULL); ShowWindow (hWindow, nCmdShow); UpdateWindow (hWindow); MSG Message; while (GetMessage(&Message,NULL,0,0)) { DispatchMessage(&Message); } return (Message.wParam); } LRESULT CALLBACK WndProc(HWND hWnd, UINT uiMessage, WPARAM wParam,LPARAM lParam) { switch(uiMessage) { case WM_PAINT: HPEN hPen; HPEN hPenalt; HBRUSH hBrush; HBRUSH hBrushalt; hBrush = CreateSolidBrush (RGB(255,100,0)); hPen = CreatePen (PS_SOLID,2,RGB(0,255,255)); HDC hdc; PAINTSTRUCT ps; hdc = BeginPaint (hWnd, &ps); hBrush = SelectObject(hdc, hBrush); hPen = SelectObject(hdc, hPen); MoveToEx (hdc,20,20,NULL); LineTo (hdc,100,100); Rectangle (hdc,120,20,240,140); RoundRect (hdc,260,20,420,140,20,20); RECT rect; SetRect (&rect,20,260,240,420); FrameRect (hdc,&rect,hBrush); SetRect (&rect,260,260,420,420); FillRect (hdc,&rect,hBrush); Ellipse (hdc,440,260,480,420); SelectObject (hdc,hBrushalt); SelectObject (hdc,hPenalt); DeleteObject (hPen); DeleteObject (hBrush); EndPaint (hWnd, &ps); return 0; case WM_DESTROY: PostQuitMessage(0); return 0; default: return DefWindowProc (hWnd, uiMessage, wParam, lParam); } }
Bitte um Hilfe, sonst muß ich gleich wieder aufgeben!!
Gruß
P.S.: Bitte Antworten mit Fehlerbeseitigung
-
reinterpret_cast oder static_cast