У меня есть приложение для окон .net 2.0.
Я переопределил метод WndProc для захвата действий пользователя в форме
Ex:
const int HTCLOSE = 0x0014;
bool m_bCloseButtonActive = false;
if (m.Msg == WM_NCHITTEST)
{
base.WndProc(ref m);
m_bCloseButtonActive = (m.Result.ToInt32() == HTCLOSE);
}
На основании значения m_bCloseButtonActive я предпринимаю дальнейшие действия.
Проблема, с которой я сталкиваюсь сейчас, заключается в том, что моя форма не закрывается, поскольку она не может зафиксировать событие нажатия кнопки «Закрыть» в операционных системах Vista и выше (даже в Windows 7).
то есть условие m.Result.ToInt32 () == HTCLOSE никогда не выполняется, и моя форма никогда не закрывается, когда я нажимаю кнопку закрытия.
Мое приложение работает в предыдущих ОС (Windows 2000, XP, XP Embedded).
Также интересно то, что это работает, когда я указываю
Application.VisualStyleState = System.Windows.Forms.VisualStyles.VisualStyleState.ClientAreaEnabled;
Есть идеи, что здесь происходит. Связано ли это с Windows Desktop Manager, мое приложение не может перехватить событие нажатия кнопки закрытия.
Заранее спасибо