2010-01-05 5 views
0

Я использую Florian's wrapper class для вызова GetSystemMenu(), чтобы добавить пользовательский пункт меню в системное меню приложения.Очистка после вызова GetSystemMenu()

Мне просто интересно, есть ли какая-либо очистка, необходимая для дескриптора, возвращаемого вызовом GetSystemMenu или дополнительных пунктов меню. Я не вижу упоминания о необходимости называть CloseHandle() или аналогичным, поэтому мое нынешнее предположение заключается в том, что это не требуется.

ответ

1

Вам не придется беспокоиться об этом.

Проверьте документы MSDN для DestroyMenu:

Меню, которое присваивается окно автоматически уничтожается при закрытии приложения.

В общем, Windows должна уничтожить меню, когда ваша форма закрыта, что, в свою очередь, уничтожит ваши пользовательские пункты меню.

0

Я имел взгляд на обертке и мое шестое чувство это:

Ручка используется в SystemMenu.cs дает мне сомнение ...

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

Это ручка, нигде в код явно закрыт или выпущен ... что заставляет меня думать, что в коде должна быть IDisposable реализация, чтобы закрыть/освободить дескриптор ...

Как вы думаете?

Надеюсь, это поможет, С уважением, Tom.

+0

Извините, что вы педантичны и ничтожны ... но мне пришлось опубликовать мою мысль об этом. – t0mm13b

+0

См. Ответ Рида. Вероятно, он удален в обработке DefWindowProc WM_NCDESTROY. – Michael

+0

@Michael: Спасибо ... но вы можете прояснить DefWindowProc в аспекте .NET ... или вы имели в виду WndProc? (защищенный метод переопределения, обычно используемый в элементах управления) – t0mm13b

Смежные вопросы