绘制到屏幕的DC C ++后强制屏幕重绘

时间:2009-03-07 03:34:06

标签: c++ screen gdi draw repaint

我正在创建一个Windows Mobile自定义SIP,当用户按下或“悬停”在键盘上的按钮上时,我使用:: GetDC(NULL)将相应的所选图像(iPhone-esque)绘制到屏幕的DC上。它是在Win32 C ++中开发的。

我的问题是我永远无法让屏幕重绘自己,删除之前绘制的密钥。我已经尝试了所有我能想到的强制它,:: RedrawWindow()使用NULL或任何Get..Window函数作为HWND的所有不同的params组合,以及所有标志组合(INVALIDATE | UPDATENOW | ERASENOW | ALLCHILDREN等)。我也尝试使用:: GetActiveWindow和:: GetForegroundWindow,使用:: GetDesktopWindow等对变形底层应用程序进行重新设置。我基本上没有想法,这是阻止我的最后一件事。在我的Windows Mobile设备上使用它。有没有人有任何想法?任何帮助将不胜感激。

我已经提供了一些屏幕截图来说明我的困境。

Before Screenshot
After Screenshot

Before http://img13.imageshack.us/img13/9861/cezoom1.png After http://img3.imageshack.us/img3/7481/cezoom2.png

提前谢谢!

2 个答案:

答案 0 :(得分:1)

为什么不创建一个临时窗口并绘制到那个?而不是绘制到背景DC?当你破坏窗口时,背景应该自动重新绘制。

我只是在猜测,因为我不知道Windows Mobile,但可能是Windows正在缓存最后一个被吸引到DC的东西,并在每次使窗口无效时重新绘制它。

答案 1 :(得分:1)

您是否在屏幕上尝试过InvalidateRect?

相关问题