Событие закрытия окна захвата

Я хочу захватить события, закрывающие окно редактора (вкладку) в среде Visual Studio 2008 IDE. Когда я использую dte2.Application.Events.get_CommandEvents (null, 0).BeforeExecute Я успешно захватил такие события:

  • file.close
  • File.CloseAllButThis
  • File.Exit
  • Window.CloseDocumentWindow и другие.

Если код в окне неприемлем, я останавливаю событие (CancelDefault = true).

Но если я нажму кнопку "X" справа, "Сохранить изменения"; диалоговое окно, вкладка с закрыть окно редактора, и у меня нет никаких захваченных событий. В этом случае я могу захватить событие WindowClosing, но не может отменить событие.

Можно ли обрабатывать "x" нажатие кнопки и остановку события?

Ответы

Ответ 1

В С# это будет примерно так: вы добавляете обработчик закрывающего события, а затем

void MyWindow_Closing(object sender, CancelEventArgs e)
        {
          if(something)
                e.Cancel = true;   //<- thats the magic part you want
}

Ответ 2

Если вы хотите использовать некоторый код Windows API, вы можете настроить крючок с помощью функции SetWindowsHookEx для перехвата WM_CLOSE, WM_QUIT и WM_DESTROY.

Ответ 3

Я бы предложил, проверьте линии обработки событий окна MDI Child!

Вкладка редактора, к которой вы обращаетесь, в основном представляет собой экземпляр окна MDI Child.

Надеюсь, это поможет!