Я создаю пользовательский SIP для Windows Mobile и, когда пользователь нажимает или «наводит» на кнопку на клавиатуре, я рисую соответствующее выбранное изображение (iPhone-esque) на экран DC с использованием :: GetDC (NULL). Он разработан в Win32 C++.Принудительный перерисовка экрана после рисования на экран DC C++
Моя проблема заключается в том, что я не могу заставить экран перекрашиваться, стирая ранее нарисованный ключ. Я пробовал все, что мог, чтобы заставить его: :: RedrawWindow() со всеми различными комбо-параметрами, используя NULL или любую из функций Get..Window как HWND и все комбинации флагов (INVALIDATE | UPDATENOW | ERASENOW | ALLCHILDREN и т. Д.). Я также попытался сделать недействительным rect и принудительно перерисовать базовое приложение, используя :: GetActiveWindow и :: GetForegroundWindow, варианты с использованием :: GetDesktopWindow и т. Д. У меня по существу заканчиваются идеи, и это последнее, что меня удерживает используя его на моем устройстве Windows Mobile. У кого-нибудь есть идеи? Любая помощь будет принята с благодарностью.
Я включил некоторые скриншоты, чтобы проиллюстрировать мою дилемму.
Before Screenshot
After Screenshot
Before http://img13.imageshack.us/img13/9861/cezoom1.pngAfter http://img3.imageshack.us/img3/7481/cezoom2.png
Заранее спасибо!
Это интересный подход, я дам ему благодарность. Я не верю, что DC кэшируется, потому что проблема возникает только тогда, когда кнопки вытягиваются за пределы моей панели sip (над ней). У меня нет этой проблемы с кнопками внутри панели, даже если они также тянутся к экрану. – 2009-03-07 19:41:16
Когда я говорю кнопками внутри панели, я имею в виду синие выбранные всплывающие кнопки. (все остальные кнопки нарисованы на растровое изображение, а затем blt на DC-панели моего sip-панели, а не на экране) – 2009-03-07 19:43:24