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