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 werden

    Ich 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


Anmelden zum Antworten