【发布时间】:2010-01-05 01:58:41
【问题描述】:
我正在使用Florian's wrapper class 调用GetSystemMenu() 将自定义菜单项添加到应用程序的系统菜单中。
我只是好奇是否需要对调用 GetSystemMenu 或其他菜单项返回的句柄进行任何清理。我没有看到任何提到需要调用 CloseHandle() 或类似的东西,所以我目前的假设是不需要这样做。
【问题讨论】:
我正在使用Florian's wrapper class 调用GetSystemMenu() 将自定义菜单项添加到应用程序的系统菜单中。
我只是好奇是否需要对调用 GetSystemMenu 或其他菜单项返回的句柄进行任何清理。我没有看到任何提到需要调用 CloseHandle() 或类似的东西,所以我目前的假设是不需要这样做。
【问题讨论】:
您不必担心。
查看 MSDN 文档以获取 DestroyMenu:
当应用程序关闭时,分配给窗口的菜单会自动销毁。
一般来说,当窗体关闭时,Windows 应该销毁菜单,这反过来又会销毁您的自定义菜单项。
【讨论】:
我看过包装纸,我的直觉是这样的:
SystemMenu.cs 中使用的句柄让我怀疑......
私有 IntPtr m_SysMenu = IntPtr.Zero; // 处理系统菜单那个句柄,代码中没有任何地方被显式关闭或释放......这让我认为代码中应该有一个 IDisposable 实现来关闭/释放句柄......
你怎么看?
希望这会有所帮助, 最好的祝福, 汤姆。
【讨论】: