我可以删除在另一个进程中创建的HBITMAP对象吗?

时间:2010-12-07 15:32:50

标签: c++ winapi hbitmap

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

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

3 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

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

答案 2 :(得分:0)

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