DC vom sichtbaren Teil eines Fensters



  • Hallo,
    kann ich irgendwie den DC von dem Teil eines Fensters bekommen, der nicht von anderen Fenstern oder der Taskleiste verdeckt wird?
    Ich dachte da an GetDCEx, aber dafür bräuchte ich wenigstens die Region des sichtbaren Bereichs.
    Kann mir da jemand weiterhelfen?



  • Evtl. via WindowFromPoint ?! 🤡



  • Ne, das Fensterhandle hab ich.
    Ich brauche nur den sichtbaren Bereich des Fenster, entweder als DC oder als Region.
    Oder gibt es bei WindowFromPoint einen Trick, den ich nicht kenne? 🙂



  • Das muss doch irgendwie gehen. 😞
    Ich wollte, dass das Fenster in eine Bitmap kopiert wird, sobald es bewegt wird. Allerdings wird alles, was über dem Fenster ist auch mitkopiert und das würde ich gern auf diese Art umgehen.



  • Alle Fenster ermitteln, die in der Z-Order über Deinem Fenster liegen.
    Und von jedem dieser Fenster die Größe+Position ermitteln.
    Und dann daraus den verbleibenden sichtbaren Teil Deines Fenster berechnen... sehr umständlich!

    Warum brauchst Du das?
    Ich kanns mir nur vorstellen, für die Geschwindigkeitsoptimierung beim Neuzeichnen?
    Aber dafür liefert WM_PAINT (über den Member rcPaint von PAINTSTRUCT) ja schon die nötigen Infos mit nur das neu zu zeichnen was neuzuzeichnen wäre...

    Martin



  • Danke für deine Antwort.
    Hast Recht, das brauch ich für's neu zeichnen. Mir ist aber grad aufgefallen, dass das sowieso nicht richtig gehen kann.
    Also, ich hab ein Fenster, auf das mit DirectX oder OpenGL gerendert wird. Unter Windows XP "verwischt" ja das Bild, sobald man das Fenster aus dem Bildschirmbereich bewegt. Das wollte ich verhindern, indem ich, sobald das Fenster "angefasst" wird, den Fensterinhalt in eine Bitmap kopiere und die dann bei WM_PAINT wieder aufs Fenster kopiere mit BitBlt.

    Das eigentliche Problem ist jetzt also, dass ich nicht rausfinden kann, was auf dem Fenster ist, wenn es von was anderem verdeckt wird.
    Ich hab mal ein Bildchen dazu gemalt -> http://img12.myimg.de/fenster672d0.png


Anmelden zum Antworten