Painting auf Window während DragOver



  • Hallo,

    Ich habe ein RichEdit-Window und für dieses das Drag&Drop neu implementiert (über IDropTarget).
    Bei dem default-Drag&Drop des RichEdit ist es so, dass wenn man bspw. Text hinein draggt, die Selektion im Editor erhalten bleibt und dort, wo die Maus ist. bzw dort wo man den neuen Text hineindroppen würde, ist ein dickerer Streifen zu sehen.
    Durch die Eigenimplementation des Drag&Drop ist das allerdings nicht mehr so. Weiß jemand, wie man das wieder so hinbekommen kann?
    Einen Befehl à la "SETDRAGCARETPOSITION" gibt es wohl nicht.
    Was auch wegfällt, ist das Setzen der Selektion bzw. des normalen Cursors an die Stelle, an die der neue Text eingefügt wird. Erstens fällt dann die ursprüngliche Selektion weg, und zweitens ist beim Drag aus einem anderen Fenster der Focus nicht in der Anwendung vom Editor (und lässt sich auch nicht setzen), so dass der Cursor nicht sichtbar ist.

    Meine Idee war daher, das Ding einfach selber zu zeichnen. Ich kann auch problemlos mit Begin/Endpaint eine Linie beim DragOver zeichnen. Nur muss ich natürlich auch den Editor irgendwie wieder neuzeichnen, sonst bleibt die Linie ja da. Und hier ist das Problem - wie kriege ich es hin, den Editor neu zu zeichnen? Wenn ich UpdateWindow() aufrufe oder auch RedrawWindow mit den passenden Parametern, wird der Editor zwar anscheinend immer neu gezeichnet (flackert leicht) - jedoch kann ich danach anscheinend kein Beginpaint/Endppaint verwenden. Alles was ich da zeichne, ist einfach nicht sichtbar (obwohl UpdateWindow doch eigentlich sofort neu zeichnet?)
    Ich habe auch eine Weile gesucht aber nichts Ähnliches mit einer guten Lösung gefunden.

    Hat daher jemand von euch eine Idee? Im Grunde will ich ja nur den Editor neu zeichnen und dann darauf irgendwas Eigenes...

    vielen Dank schonmal!


Log in to reply