Konvertierung von 'void*'



  • Servus,

    versuche grad mich ein wenig in die Windows Programmierung mit C++ einzuarbeiten.

    Dazu hab ich folgenden Quelltext abgetippt:

    [cpp]
    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);
    hBrushalt = SelectObject (hdc, hBrush);
    hPenalt = 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);
    }
    }
    [/cpp]

    Allerdings bekomme ich beim Kompilieren die Fehlermeldungen:

    d:\eigene dateien\studium\programmiersprachen\testprgramme\winapi2\winapi2.cpp(58) : error C2440: '=' : 'void *' kann nicht in 'struct HBRUSH__ ' konvertiert werden
    Konvertierung von 'void
    ' in Zeiger auf nicht-'void' erfordert eine explizite Typumwandlung
    d:\eigene dateien\studium\programmiersprachen\testprgramme\winapi2\winapi2.cpp(59) : error C2440: '=' : 'void *' kann nicht in 'struct HPEN__ ' konvertiert werden
    Konvertierung von 'void
    ' in Zeiger auf nicht-'void' erfordert eine explizite Typumwandlung

    Und von der Typenkonvertierung (erst recht von *void und Struckt) unter C++ hab ich noch keine Ahnung.



  • hBrushalt = (HBRUSH)SelectObject (hdc, hBrush);

    oder mit c++ cast:

    hBrushalt = reinterpret_cast<HBRUSH>(SelectObject (hdc, hBrush));



  • Dank Dir!



  • tipp schrieb:

    hBrushalt = reinterpret_cast<HBRUSH>(SelectObject (hdc, hBrush));

    static_cast reicht aus.


Anmelden zum Antworten