Ich erstelle eine Windows Mobile benutzerdefinierte SIP und während der Benutzer drückt oder "schwebt" über eine Schaltfläche auf der Tastatur zeichne ich das entsprechende ausgewählte Bild (iPhone-esque) auf dem Bildschirm DC mit :: GetDC (NULL). Es wird in Win32 C++ entwickelt.Bildschirm neuzeichnen nach dem Zeichnen auf Bildschirm DC C++
Mein Problem ist, dass ich nie den Bildschirm bekommen kann, um sich neu zu streichen, den vorher gezeichneten Schlüssel löschend. Ich habe alles versucht, um es zu erzwingen, :: RedrawWindow() mit allen verschiedenen Kombinationen von Params mit NULL oder einer der Funktionen Get..Window als HWND, und alle Combo Flags (INVALIDATE | UPDATENOW | ERASENOW | ALLCHILDREN usw.). Ich habe auch versucht, das Rect ungültig zu machen und ein Repaint der zugrundeliegenden App mit :: GetActiveWindow und :: GetForegroundWindow, Variationen mit :: GetDesktopWindow, etc. zu erzwingen. Ich habe im Grunde keine Ideen mehr und es ist das letzte, was mich davon abhält Verwenden Sie es auf meinem Windows Mobile-Gerät. Hat jemand irgendwelche Ideen? Jede Hilfe würde sehr geschätzt werden.
Ich habe einige Screenshots zur Veranschaulichung meines Dilemmas beigefügt.
Before Screenshot
After Screenshot
Before http://img13.imageshack.us/img13/9861/cezoom1.pngAfter http://img3.imageshack.us/img3/7481/cezoom2.png
Vielen Dank im Voraus!
Das ist ein interessanter Ansatz, ich werde es einen Versuch geben danke. Ich glaube nicht, dass der DC Caching ist, weil das Problem nur auftritt, wenn die Buttons außerhalb meines sip-Panels (darüber) gezeichnet werden. Ich habe dieses Problem nicht mit Schaltflächen im Panel, obwohl sie auch auf den Bildschirm gezogen werden. –
Wenn ich Buttons innerhalb des Panels sage, meine ich die blau ausgewählten Popup-Buttons. (alle anderen Tasten werden zu einem Bitmap gezeichnet und dann auf die DC des Bildschirms meines Bildschirms und nicht auf dem Bildschirm) –