1

我正在创建一个实用程序,它使用全局挂钩将一些(用户可自定义的)图标绘制到桌面上的其他窗口上。由于位图对象特定于一个进程,因此在绘制它们之前,我在每个进程中为这些图标创建单独的 HBITMAP 对象,并且所有这些句柄都存储在 dll 的共享段中。

现在,当我的程序中(由用户)删除一个图标时,应该删除这些不同进程中它的所有 HBITMAP 对象。我可以在我的主程序中使用 DeleteObject() 执行此操作,还是必须在创建它的过程中删除每个句柄?

4

3 回答 3

1

当然,您必须从创建它们的进程中删除它们 - 即使它对您有用,但对于不同的 Windows 版本,它可能不会。

于 2010-12-07T17:26:59.103 回答
1

GDI 对象的句柄通常是私有进程。无论如何,您都可以检查 DeleteObject 的返回值。

于 2010-12-07T16:10:30.617 回答
0

我只是在猜测这个......
你应该使用一个钩子来钩到另一个窗口。

于 2010-12-11T01:06:10.537 回答