2010-12-07 38 views
1

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

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

回答

1

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

1

处理GDI对象通常是一个私有过程。无论如何你可以检查DeleteObject的返回值。

0

我只是在猜测这个......
你应该使用一个钩子来钩住不同的窗口。

相关问题