是否有可能知道Windows小部件是否完全被其他窗口覆盖?

时间:2010-02-28 10:52:38

标签: widget windows-desktop-gadgets

我们要创建weather widget

的Windows桌面版本

小部件有两件特别之处。

  1. 耗费大量处理器时间 活跃时 - 显示一个 不幸的是,动画图片(没有GPU加速的Flash)。
  2. 它会更新我们的天气 服务器(来自所有小部件用户的频繁服务器请求)。
  3. 当用户没有查看小部件时,不需要动画和天气加载。

    所以我知道如果我的小部件不可见而且没有使用它就会让我睡觉。

    是否可以检测是否使用了窗口小部件。 说到我需要知道窗口小部件是否被其他窗口覆盖?

    我最感兴趣的是Vista / 7小工具引擎,不过我也想知道这些小工具引擎是否解决了这个问题

    • Yahoo小部件
    • Google桌面

    希望在这里找到一些桌面小工具大师。

    帕沙

1 个答案:

答案 0 :(得分:1)

如果您InvalidateRect并且未收到后续的WM_PAINT消息,则会隐藏您的窗口。您可以在UpdateWindow之后致电InvalidateRect以强制WM_PAINT消息立即发生(或不会发生)。

所以你可以做这样的事情

  1. 请求服务器数据(以及取消请求计时器,如果有的话)
  2. 数据到达时InvalidateRect
  3. 当WM_PAINT消息到达时,绘制数据并为下一个请求设置计时器
  4. 当计时器到达时,转到1
  5. 当您停止获取WM_PAINT消息时,您将停止重新设置计时器,并因此停止从服务器请求更新。发生WM_PAINT消息时(因为您不再被覆盖)。您再次开始请求数据。