Winapi 销毁游标';由LoadCursor创建的t free GDI句柄

Winapi 销毁游标';由LoadCursor创建的t free GDI句柄,winapi,Winapi,(Windows)我正在使用LoadCursor创建游标,并使用DestroyCursor删除它们。 但是,使用GetGuiResources时,似乎没有释放游标GDI句柄(销毁后计数保持不变)。为什么? 使用GetGuiResources,我还可以看到LoadCursor获得2个GDI句柄,而不是一个。为什么? 我正在使用LoadCursor创建游标,并使用DestroyCursor删除它们 从销毁游标的文档中: DestroyCursor函数用于销毁非共享的光标。不要使用 此函数用于销毁共享

(Windows)我正在使用LoadCursor创建游标,并使用DestroyCursor删除它们。 但是,使用GetGuiResources时,似乎没有释放游标GDI句柄(销毁后计数保持不变)。为什么?

使用GetGuiResources,我还可以看到LoadCursor获得2个GDI句柄,而不是一个。为什么?

我正在使用
LoadCursor
创建游标,并使用
DestroyCursor
删除它们

销毁游标的文档中

DestroyCursor函数用于销毁非共享的光标。不要使用 此函数用于销毁共享游标。共享游标的有效性如下所示 只要加载它的模块仍保留在内存中。这个 以下函数获取共享游标:

  • 加载光标
  • LoadCursorFromFile
  • LoadImage(如果使用LR_共享标志)
  • CopyImage(如果使用LR_COPYRETURNORG标志且hImage参数为共享光标)

调用
LoadCursor
返回的游标是共享的,您不应该将其传递给
DestroyCursor
。进程终止时,共享游标资源将被销毁。

您不能对由
LoadCursor
()创建的游标调用
DestroyCursor
。谢谢,我如何删除共享游标?为什么DestroyCursor没有返回一个错误呢?当应用程序退出时,共享游标将被处理掉,您不需要自己去做。您可以调用
LoadImage
,而不指定
LR_SHARED
,然后您将创建一个非共享游标,您可以(也应该)销毁它。谢谢你的建议。我不应该在尝试销毁共享游标时收到错误吗?为什么LoadCursor之后计数增加了2?如果您从
DestroyCursor
收到一个非零的返回,您需要向MS查询原因。我认为计数会增加2,因为它在内部保持一个句柄打开,并向每次调用
LoadCursor
传递一个副本,但我只是在这里进行理论推导。您可以多次调用
LoadCursor
,查看句柄计数的行为。David,您对我的其他问题有什么见解吗?谢谢。你是说为什么把手数增加了2?没有洞察。我真的不明白为什么这很重要。