在GDI +(或GDI)屏幕上绘制类似于检查

我正在使用GDI +在屏幕上(整个屏幕,在其他窗口之上)绘图。
我已经通过NULL到GetDC获取一个HDC到屏幕上,然后用它来创build一个Graphics对象,并使用DrawRectangle在屏幕上绘制矩形。
一切正常..除…矩形的内部不会更新。

就像我通过命令提示符绘制它并移动命令提示符一样,矩形内部仍为黑色。 我期望看到矩形下面有什么。

这是做绘图的代码

Pen BluePen(Color(255, 0, 255, 0), 2); Graphics graphics(screenDC); graphics.DrawRectangle(&BluePen, myRect); 

很简单,那么有什么我必须做的,以获得矩形的内部更新时,屏幕呢? 或者让它真正透明。

=================编辑=================

那么我已经放弃了这一点,并认为这是不可能的,直到…我意识到Windows SDK附带的Inspect工具可以完美地实现这一点。

我想重新创build类似于高亮矩形的东西,如果我select了一个窗口(如Firefox),然后将Inspect带入焦点,我可以自由移动它,所有内容都可以完美更新。 甚至没有任何闪烁。

所以…有没有人知道如何Inspectpipe理这样做?

也在GDI的答案,而不是GDI +罚款…

在Windows中,屏幕(和窗口…)表面是…易失性的,就像沙箱一样。 窗户的“重叠”和未覆盖的表面的重新绘制是适当的事件管理造成的错觉。

所有东西都绘制在那里,直到其他东西被绘制出来。 “揭开”表面使得表示该表面的窗口接收WM_PAINT消息。 这是由窗口程序来对这个信息作出反应,重新绘制一切应该在它之下。

现在,除非你拦截发送到桌面窗口的WM_PAINT消息,否则几乎没有机会知道桌面需要重绘,因此不会调用绘制代码,也不会重绘。 或者更好的发生在桌面窗口更新代码之后,这不知道你的油漆。