Farbige Objekte in der Seitenansicht



  • Hallo zusammen,

    ich habe eine SDI-Application erstellt und die folgenden Zeilen zum zeichen eines roten Kreises in CMyView:::OnDraw(CDC* pDC) eingefügt:

    CPen pen(PS_SOLID, 1 , RGB(255,0,0));
    pDC->SelectObject(pen);
    pDC->Ellipse(100,100,200,200);

    Der Kreis wird auch gezeichnet. Rufe ich aber die Seitenansicht auf, dann knallt es. Lasse ich die ersten beiden Zeilen zur Stiftauswahl weg dann wird die Ellipse auch in der Seitenansicht angezeigt.

    Woran kann das liegen? Ich habe es in einem neuen, leeren Testprojekt versucht.

    Gruß
    Andrea



  • Falsch:

    pDC->SelectObject(pen);

    Richtig:

    pDC->SelectObject(&pen);
    

    weil SelectObject einen Pointer erwartet.
    Es ist so deklariert: CPen* SelectObject( CPen* pPen );

    Was ich allerdings nicht verstehe ist, warum es beim Anzeigen auf dem Bildschirm klappt, auch ohne Pointer.

    Gruß,
    Ravel

    [ Dieser Beitrag wurde am 14.04.2003 um 13:12 Uhr von Ravel2000 editiert. ]



  • Da dann aber eigentlich der Compiler schon einen Fehler melden sollte, vermute ich das Problem woanders. Versuch's mal damit, sollte man immer machen:

    CPen pen(PS_SOLID, 1 , RGB(255,0,0));
    CGdiObject* pObj = pDC->SelectObject(&pen);
    pDC->Ellipse(100,100,200,200);
    pDC->SelectObject(pObj);
    


  • Danke Ravel, so geht's.

    Aber warum tritt erst bei Seitenansicht ein Fehler auf und nicht schon beim direkten Zeichen?

    Andrea



  • Aber warum tritt erst bei Seitenansicht ein Fehler auf und nicht schon beim direkten Zeichen?

    Das verstehe ich auch nicht. Hab mir auch mal ein Testprojekt erstellt und den gleichen Fehler beobachtet.
    Seltsam ist, daß es auf dem Bildschirm funktioniert UND außerdem der Compiler nicht meckert.
    Was auch ungewöhnlich ist:

    CPen* oldpen = pDC->SelectObject(pen);
    

    Bei dieser Schreibweise meckert schon der Compiler, was er vorher nicht tat, aber eigentlich auch müsste.
    Vielleicht hat jemand des Rätsels Lösung parat?

    Gruß,
    Ravel


Anmelden zum Antworten