Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C++ Builder > Определение карты сообщений Windows


Автор: VID 7.6.2006, 09:30
     Привет Всем!
Пишу небольшую программку на С++ под Borlan Developer Studio 2006 и схватил неприятный случай:

Код

const WM_NOTIFYTRAYICON = WM_USER + 1;

class TfmTrayContainer : public TForm
{
private:    // User declarations
    void __fastcall ON_WMTRAYICONNOTIFY(TMessage& msg);
public:        // User declarations
    __fastcall TfmTrayContainer(TComponent* Owner);
                __fastcall ~TfmTrayContainer();

                BEGIN_MESSAGE_MAP /// Здуесь вываливается exception StackOverflow
                       MESSAGE_HANDLER(WM_NOTIFYTRAYICON, TMessage, ON_WMTRAYICONNOTIFY)
                END_MESSAGE_MAP(TfmTrayContainer)
};


В отладчике полазил и обнаружил рекурсивный вызов макроса BEGIN_MESSAGE_MAP, но почему? 

Автор: Fazil6 7.6.2006, 09:49
попробуй
Код

protected: 
                BEGIN_MESSAGE_MAP 
                    VCL_MESSAGE_HANDLER(WM_NOTIFYTRAYICON, TMessage, ON_WMTRAYICONNOTIFY)    
                END_MESSAGE_MAP(TfmTrayContainer)
 

Автор: VID 7.6.2006, 10:31
   Так я тоже пробовал, здесь так не написал, чтоб не вводить в смущение. В Borland C++Builder6.0, все Ок, а BDS2006 отправляет к чертям  smile  

Автор: VID 7.6.2006, 12:28
   Похоже это косяк BDS2006. Перехватил сообщения через WndProc - нормально,но...  Скажите люди а как мне перехватить сообщения которые не адресованы к моему окну. Допустим пользователь нажал левую клавишу мыши и выделил прямоугольник (прям поверх всех окон), как мне узнать координаты этого прямоугольника? 

Автор: Inga 7.6.2006, 12:46
>Похоже это косяк BDS2006.

Может второй апдейт подправит ситуацию. 

Автор: _hunter 7.6.2006, 13:06
это хук (локальный) вешать нужно.
подробности -- в поиске 

Автор: VID 7.6.2006, 13:19
  Inga у меня и так второй update... косяк все равно присутствует.

  hunter - ".. ну чтож будем искать..." 

Автор: VID 7.6.2006, 14:55
 hunter, я всю ветку по "Borland C++ Builder" перерыл в посках сокровенного хука. Но там только ответы "...смотри в поиске, эта тема подымалась уже 1000 раз..." На каких еще ветках можно поискать на вскидку? 

Автор: _hunter 7.6.2006, 15:06
сис-программирование и WinAPI... 

Автор: VID 8.6.2006, 06:40
Спасибо hunter, нашел.

Приятно со всеми было пообщаться. Спасибо.  smile  

Автор: VID 8.6.2006, 10:29
Если это кому-то понадобится см сюда http://forum.vingrad.ru/index.php?showtopic=95253 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)