Поиск:

Ответ в темуСоздание новой темы Создание опроса
> ON_NOTIFY 
V
    Опции темы
maq
  Дата 11.9.2008, 01:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 173
Регистрация: 28.10.2005

Репутация: нет
Всего: нет



Как в окне A перехватить сообщение WM_NOTIFY, которое отсылается окну B, дочернему по отношению к A?
Код
//A.h
afx_msg void FillDCombo(NMHDR* pNMHDR, LRESULT* pResult);

//A.cpp
BEGIN_MESSAGE_MAP(VReportCard, VCard)
    ON_NOTIFY(UDM_DCB_DROPDOWN, IDC_EDIT1+1, &VReportCard::FillDCombo)
END_MESSAGE_MAP()

//...
pDocView = new RDComboBox;
pDocView->Create(WS_VISIBLE | WS_BORDER | ES_AUTOHSCROLL, rc, this, IDC_EDIT1+1);
//...

void VReportCard::FillDCombo(NMHDR* pNMHDR, LRESULT* pResult)
{
    //.. не заходит в функцию
}

//B.cpp
BOOL RDComboBox::OnNotify(WPARAM wParam, LPARAM lParam, LRESULT* pResult)
{
    NMHDR* pNMHDR = (NMHDR*) lParam;
    if(pNMHDR)
    {
        if(pNMHDR->code == WM_LBUTTONDOWN)
            if(pBtn)
                if(pNMHDR->idFrom == pBtn->GetDlgCtrlID())
                {
                    NMHDR* pNMHDRnew = new NMHDR;
                    pNMHDRnew->hwndFrom = m_hWnd;
                    pNMHDRnew->idFrom = GetDlgCtrlID();
                    if(nStatus & UDS_DCB_DROPPED)
                    {
                        pNMHDRnew->code = UDM_DCB_CLOSEUP;
                    }
                    else
                    {
                        pNMHDRnew->code = UDM_DCB_DROPDOWN;
                    }
                    // сюда заходит
                    // это сообщение должно быть перехвачено в родительском окне
                    SendMessage(WM_NOTIFY, pNMHDRnew->code, (LPARAM)pNMHDRnew);
                    delete pNMHDRnew;
                }
    }

    return REdit::OnNotify(wParam, lParam, pResult);
}

Я не уверен, правильно ли я использовал
ON_NOTIFY(UDM_DCB_DROPDOWN, IDC_EDIT1+1, &VReportCard::FillDCombo)

PM MAIL   Вверх
Earnest
Дата 11.9.2008, 14:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 87
Всего: 183



Цитата(maq @  11.9.2008,  02:14 Найти цитируемый пост)
Как в окне A перехватить сообщение WM_NOTIFY, которое отсылается окну B, дочернему по отношению к A?

Кем отсылаются? Может, ты что-то путаешь? WM_NOTIFY посылают дочерние окна своим родителям, а не наоборот... Кто там у тебя кому потомок? И кто такие REdit и RDComboBox?


--------------------
...
PM   Вверх
maq
  Дата 15.9.2008, 19:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 173
Регистрация: 28.10.2005

Репутация: нет
Всего: нет



Earnest, твой вопрос заставил меня копнуть глубже в другом направлении. Теперь все работает. У меня было неверное представление о механизме WM_NOTIFY. Вопрос решен. Спасибо!
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Visual C++/MFC/WTL | Следующая тема »


 




[ Время генерации скрипта: 0.0409 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.