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

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

有帮助吗?

解决方案

绝对必须将它们从创建它们的过程中删除 - 即使它适合您,对于不同的Windows版本,它可能不会。

其他提示

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

我只是猜这个...
您应该使用钩子,将钩钩到其他窗口上。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top