Принудительно перерисовывать экран после рисования на экране DC C ++ - PullRequest
0 голосов
/ 07 марта 2009

Я создаю пользовательский 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

Заранее спасибо!

Ответы [ 2 ]

1 голос
/ 07 марта 2009

Вы пробовали InvalidateRect на экране?

1 голос
/ 07 марта 2009

Вместо того, чтобы рисовать в фоновом режиме, почему бы вам не создать временное окно и не рисовать в нем? Когда вы разрушаете окно, фон должен автоматически перекрашиваться.

Я просто догадываюсь, потому что я не знаю Windows Mobile, но может случиться так, что Windows кэширует последнюю вещь, которая была нарисована в DC, и перерисовывает ее каждый раз, когда вы закрываете окно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...