Frage

Ich erstelle ein Windows Mobile benutzerdefinierte SIP und wie der Benutzer drückt oder „schwebt“ über eine Taste auf der Tastatur Ich ziehe es ausgewähltes Bild ist entsprechend (iPhone-esque) auf den Bildschirm des DC mit :: GetDC (NULL). Es wird in Win32 C ++ entwickelt.

Mein Problem ist, dass ich nie der Bildschirm selbst neu zu zeichnen bekommen können, die zuvor gezeichneten Schlüssel zu löschen. Ich habe alles versucht, ich denken konnte, um es zu zwingen, :: RedrawWindow () mit allen verschiedenen Kombinationen von params mit NULL oder einen der Get..Window Funktionen wie die HWND, und alle Combo von Fahnen (INVALIDATE | UPDATENOW | ERASENOW | ALLCHILDREN usw.). Ich habe auch versucht die rect ungültig zu machen und ein Neuzeichnen der zugrunde liegenden App zwingt mit :: GetActiveWindow und :: GetForegroundWindow, Variationen unter Verwendung :: GetDesktopWindow usw. Ich habe im Wesentlichen die Ideen ausgehen und es ist das letzte, was ich von halten indem es auf meinem Windows mobile-Gerät. Hat jemand irgendwelche Ideen? Jede Hilfe wäre sehr geschätzt.

Ich habe einige Screenshots enthalten mein Dilemma zu verdeutlichen.

Vor Screenshot
Nach Screenshot

Vor http://img13.imageshack.us/img13/9861/cezoom1. png Nach http://img3.imageshack.us/img3/7481/ cezoom2.png

Vielen Dank im Voraus!

War es hilfreich?

Lösung

Anstatt DC in den Hintergrund zeichnen, warum Sie nicht über ein temporäres Fenster erstellen und in der ziehen? Wenn Sie das Fenster zerstören, sollte der Hintergrund automatisch neu gestrichen bekommen.

Ich kann nur raten, weil ich Windows Mobile weiß es nicht, aber es könnte sein, dass Windows das letzte, was ist das Caching, die in die DC gezogen wurden und es jedes Mal, wenn Sie das Fenster ungültig neu zu streichen.

Andere Tipps

Haben Sie InvalidateRect auf dem Bildschirm hWnd versucht?

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top