Страница 1 из 1

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

Добавлено: Ср мар 07, 2007 11:35
Maximus
Хотелось бы узнать, посылает ли Lister сообщение Total Commander`у, когда его окно закрывают. И, если посылает, то какое?
Исследовал ли кто-то данный вопрос?
Я поставил (или что там с ним делают) хук на окно ТС и выяснил, что при закрытии окна Lister`а из сообщений>=WM_USER (и даже>=WM_APP) Total Commander получает сообщение с кодом 0xB021.
Оно ли это? И что вообще скажете по этому поводу...

Добавлено: Ср мар 07, 2007 12:10
CaptainFlint
ListCloseWindow is called when a user closes lister, or loads a different file.

Добавлено: Ср мар 07, 2007 12:28
Maximus
А теперь мне интересно, что у меня было вместо мозгов вчера вечером и сегодня с утра :)
Но зато я уже успел сделать всё через задницу и оно, надо сказать, работает :) Придется переделывать по нормальному...

Добавлено: Ср мар 07, 2007 12:45
Maximus
Хотя с другой стороны написано (выделил жирным):
ListCloseWindow is called when a user closes lister, or loads a different file.
Что значит loads a different file? Это когда переход к следующему/предыдущему файлу?

И вообще :oops: Я забыл, что мне это не подходит, потому что плагин очень сильно специфический (AppLoader). И потому метод с хуком WH_GETMESSAGE и отлавливанием сообщения 0xB021 совсем не через задницу, а очень даже правильный в моём случае.

Добавлено: Пт апр 20, 2007 23:15
VadiMGP
а очень даже правильный в моём случае.
Знаешь, мне тут пришлось тоже заняться похожим вопросом и я пришел к выводу, что это все-таки опасная затея - полагаться на мессаги из диапазона WM_APP - 0xBFFF. Ковырялся я в TC7 RС2 и никакого 0xB021 не увидел вообще. Зато увидел 0xB000 и 0xB001. Иногда посылается одно, иногда другое.
Так что, если уж ставишь хук, то надежнее отлавливать WM_DESTROY (а еще лучше WM_NCDESTROY) на окно листера.