在调用GetSystemMenu()后清理()

问题描述:

我使用Florian's wrapper class来调用GetSystemMenu()以将自定义菜单项添加到应用程序的系统菜单中。在调用GetSystemMenu()后清理()

我只是好奇是否有任何清理所需的通过调用GetSystemMenu或额外的菜单项返回的句柄。我没有看到任何需要调用CloseHandle()或类似的东西,所以我目前的假设是这不是必需的。

你不应该担心它。

检查MSDN文档为DestroyMenu

分配给一个窗口,在应用程序关闭时自动销毁的菜单。

一般来说,当窗体关闭时,Windows应该销毁菜单,这反过来会破坏您的自定义菜单项。

我有一看包装,我的直觉是这样的:

内SystemMenu.cs使用的手柄是给我一个疑问......

 
private IntPtr m_SysMenu = IntPtr.Zero; // Handle to the System Menu 

该句柄,无处该代码正在被明确关闭或释放......这导致我认为在代码内应该有一个IDisposable实现来关闭/释放句柄...

你觉得呢?

希望这会有所帮助, 最好的问候, 汤姆。

+0

不好意思是迂腐和挑剔的...但不得不发表我的想法。 – t0mm13b 2010-01-05 02:26:27

+0

查看Reed的回答。它可能在DefWindowProc处理WM_NCDESTROY时被删除。 – Michael 2010-01-05 02:31:23

+0

@Michael:谢谢...但是你能澄清一下.NET中的DefWindowProc ......或者你的意思是WndProc? (在控件中常见的保护覆盖方法) – t0mm13b 2010-01-05 02:34:40