Принудительно перерисовывать экран после рисования на экране DC C ++
Вопрос
Я создаю пользовательский SIP для Windows Mobile и, когда пользователь нажимает или " зависает " поверх кнопки на клавиатуре я рисую его соответствующее выбранное изображение (iPhone-esque) для DC экрана, используя :: GetDC (NULL). Разработано в Win32 C ++. Р>
Моя проблема в том, что я не могу заставить экран перекрашиваться, стирая ранее нарисованный ключ. Я перепробовал все, что мог придумать, чтобы заставить его, :: RedrawWindow () со всеми различными комбинациями параметров, используя NULL или любую из функций Get..Window в качестве HWND, и все комбинированные флаги (INVALIDATE | UPDATENOW | ERASENOW | ALLCHILDREN и т. Д.). Я также попытался сделать недействительным прямоугольник и принудительно перекрасить основное приложение, используя :: GetActiveWindow и :: GetForegroundWindow, варианты, используя :: GetDesktopWindow и т. Д. У меня практически закончились идеи, и это последнее, что меня удерживает от используя его на моем устройстве Windows Mobile. У кого-нибудь есть какие-либо идеи? Любая помощь будет принята с благодарностью. Р>
Я включил несколько скриншотов, чтобы проиллюстрировать мою дилемму.
до снимка экрана
после снимка экрана
До http://img13.imageshack.us/img13/9861/cezoom1. png После http://img3.imageshack.us/img3/7481/ cezoom2.png
Заранее спасибо!
Решение
Вместо того, чтобы рисовать в фоновом режиме, почему бы вам не создать временное окно и не рисовать в нем? Когда вы разрушаете окно, фон должен автоматически перекрашиваться.
Я просто догадываюсь, потому что я не знаю Windows Mobile, но может случиться так, что Windows кэширует последнюю вещь, которая была нарисована в DC, и перерисовывает ее каждый раз, когда вы аннулируете окно.
Другие советы
Вы пробовали InvalidateRect на экране?