Problem mit GetDCEx



  • mein klassenstyle ist CS_PARENTDC | CS_GLOBALCLASS

    beim zeichnen in WM_NCPAINT

    RECT rc; 
    GetWindowRect(hWnd, &rc);
    OffsetRect(&rc, -rc.left, -rc.top);
    HDC hdc = ::GetDCEx(hWnd, (HRGN)wParam, DCX_WINDOW | DCX_INTERSECTRGN | DCX_PARENTCLIP);
    DrawEdge(hdc, &rc, BDR_SUNKENOUTER, BF_RECT | ((m_bFocus && m_bFlatOnFocus)?BF_FLAT:0));
    ::ReleaseDC(hWnd, hdc);
    

    wird zwar mein border ordendlich gezeichnet, aber sobald ich ein anderes fenster (mit der mouse) über mein fenster bewege, wird mein border nur teilweise gezeichnet.

    was mache ich falsch ??



  • Welcher Teil wird denn gezeichnet - der der verdeckt war?

    edge
    Specifies the type of inner and outer edges to draw. This parameter must be a combination of one inner-border flag and one outer-border flag. The inner-border flags are as follows.

    Wozu verschiebst du das Rect eigentlich? 🙄



  • flenders schrieb:

    Welcher Teil wird denn gezeichnet - der der verdeckt war?

    ja genau der

    flenders schrieb:

    Wozu verschiebst du das Rect eigentlich? 🙄

    DCX_WINDOW ist doch der nicht clientbereich, 0,0 ist doch die position des linken, oberen nc bereich oder ?



  • Mit der Position solltest du Recht haben - stand wohl etwas auf der Leitung 😃
    Hast du jetzt bei DrawEdge ein inner-border flag mit angegeben?


Anmelden zum Antworten