Je crée un SIP personnalisé Windows Mobile et quand l'utilisateur presse ou "passe" sur un bouton du clavier, je dessine son image sélectionnée correspondante (iPhone-esque) à l'écran DC utilisant :: GetDC (NULL). Il est développé dans Win32 C++. Mon problème est que je ne peux jamais faire repeindre l'écran lui-même, en effaçant la clé précédemment dessinée. J'ai essayé tout ce que je pouvais penser pour le forcer, :: RedrawWindow() avec tous les différents combos de params utilisant NULL ou l'une des fonctions Get..Window comme HWND, et tous les combos de flags (INVALIDATE | UPDATENOW | ERASENOW ALLCHILDREN etc). J'ai également essayé d'invalider le rect et de forcer une repeinte de l'application sous-jacente en utilisant :: GetActiveWindow et :: GetForegroundWindow, des variations en utilisant :: GetDesktopWindow, etc. Je n'ai pratiquement plus d'idées et c'est la dernière chose qui me retient en l'utilisant sur mon appareil Windows Mobile. Quelqu'un a-t-il une idée? Toute aide serait grandement appréciée.Redessiner l'écran après avoir dessiné le DC C++ de l'écran
J'ai inclus quelques captures d'écran pour illustrer mon dilemme.
Before Screenshot
After Screenshot
Before http://img13.imageshack.us/img13/9861/cezoom1.pngAfter http://img3.imageshack.us/img3/7481/cezoom2.png
Merci à l'avance!
C'est une approche intéressante, je vais essayer. Je ne crois pas que le contrôleur de domaine est en cache parce que le problème se produit uniquement lorsque les boutons sont dessinés en dehors de mon panneau sip (au-dessus). Je n'ai pas ce problème avec des boutons à l'intérieur du panneau, même s'ils sont également attirés par l'écran. –
Quand je dis des boutons à l'intérieur du panneau, je veux dire les boutons contextuels bleus sélectionnés. (tous les autres boutons sont dessinés sur un bitmap, puis blt sur le DC de mon panneau de sip et non sur l'écran) –