代码之家  ›  专栏  ›  技术社区  ›  David Gardiner

调用GetSystemMenu()后清除

  •  0
  • David Gardiner  · 技术社区  · 15 年前

    我在用 Florian's wrapper class 打电话 GetSystemMenu() 将自定义菜单项添加到应用程序的系统菜单。

    我只是好奇调用getSystemMenu或其他菜单项返回的句柄是否需要任何清理。我没有看到任何关于需要调用closehandle()或类似的内容,所以我目前的假设是不需要这样做。

    2 回复  |  直到 15 年前
        1
  •  1
  •   Reed Copsey    15 年前

    你不必为此担心。

    检查msdn文档 DestroyMenu :

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

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

        2
  •  0
  •   t0mm13b    15 年前

    我看过包装纸,我的直觉是:

    SystemMenu.cs中使用的句柄让我怀疑…

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

    这个句柄,代码中的任何地方都没有被显式地关闭或释放…这让我想到代码中应该有一个IDisposable实现来关闭/释放句柄…

    你怎么认为?

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