- 使用CreateCursor动态创建的光标
当使用CreatorCursor
函数动态创建光标时,系统不会自动管理这些光标的生命周期。因此,当这些光标不再需要时,需要使用DestroyCursor
函数手动销毁。
HCURSOR hCursor = ::CreateCursor(...);
// 使用光标
::DestroyCursor(hCursor); // 当不再需要时销毁
- 使用LoadCursorFromFile加载的光标
通过LoadCursorFromFile
函数加载的光标,在不再需要时也应该被销毁。
HCURSOR hCursor = ::LoadCursorFromFile(_T("path_to_cursor_file.cur"));
// 使用光标
::DestroyCursor(hCursor); // 当不再需要时销毁光标
- 使用CopyImage函数复制的光标
使用CopyImage
函数复制了一个光标,得到的新光标同样需要在不再使用时通过DestroyCursor
函数销毁。
HCURSOR hOrigCursor = ::LoadCursor(NULL, IDC_ARROW);//系统预定义光标,无需销毁,由系统管理
HCURSOR hCopyCursor = (HCURSOR)::CopyImage(hOrigCursor, IMAGE_CURSOR, 0, 0, 0);
// 使用复制的光标
::DestroyCursor(hCopyCursor); // 当不再需要时销毁光标
- 使用CopyCursor函数复制的光标
与使用CopyImage
函数创建出的光标类似,当使用CopyCursor
复制一个光标时,也需要手动销毁这个复制出来的光标实例,以免资源泄露。
HCURSOR hOrigCursor = ::LoadCursor(NULL, IDC_ARROW); // 加载一个系统预定义的光标
HCURSOR hCopyCursor = ::CopyCursor(hOrigCursor); // 创建光标的副本
// 使用复制的光标...
::DestroyCursor(hCopyCursor); // 当不再需要时销毁光标副本
如还有其他情况,欢迎评论区补充~