Обработка собщений базового класса в другом классе.
От: Buggy  
Дата: 15.03.09 13:01
Оценка:
Мне нужно все собщения главного окна отлавливать также в другом классе.
т.е у меня есть класс CTrayApp, в нем есть обработчик создания окна

template <class T>
class CTrayApp
{
public:

    BEGIN_MSG_MAP(CTrayApp)
        MESSAGE_HANDLER(WM_CREATE, OnCreate)
        MESSAGE_HANDLER(TRAY_NOTIFYICON, OnTrayIcon)
    END_MSG_MAP()

    LRESULT OnCreate(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& /*bHandled*/)
    {
            .............


И также класс фрейма окна, где я обрабатываю все сообщения.

class COnAirFrame : 
    public CFrameWindowImpl<COnAirFrame>, 
    public CUpdateUI<COnAirFrame>,
    public CAppWindow<COnAirFrame>,
    public CMessageFilter, public CIdleHandler,
    public CTrayApp<COnAirFrame>
{
 private:
    typedef CTrayApp<COnAirFrame> TrayApp;
 ..........
 BEGIN_MSG_MAP(COnAirFrame)
        MESSAGE_HANDLER(WM_CREATE, OnCreate)

        CHAIN_MSG_MAP(TrayApp)

        CHAIN_MSG_MAP(CAppWindow<COnAirFrame>)
        CHAIN_MSG_MAP(CUpdateUI<COnAirFrame>)
        CHAIN_MSG_MAP(CFrameWindowImpl<COnAirFrame>)
  END_MSG_MAP()


Я вызываю вроде CHAIN_MSG_MAP(TrayApp) т.е все сообщения должны также идти и в класс CTrayApp, а почему-то обрабатывается OnCreate базового класса. Наверное тут что-то совсем по другому делать надо, направте в какую сторону капать пожалуйста.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.