Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > [ActiveX] WM_USER & ON_MESSAGE


Автор: Windigo 25.8.2004, 13:53
Привет всем!
Ситуация такая: есть страница свойств ActiveX компонента (IDD_MY_PROPPAGE), на ней размещен MFCGridCtrl (MyGridCtrl) . По двойному клику на MyGridCtrl, должен выставляться SetModifiedFlag() на странице;

Делаю так
Код

void CMyGridCtrl::OnLButtonDblClk(UINT nFlags, CPoint point)
{
CWnd* ppage = GetDlgItem(IDD_MY_PROPPAGE);
::SendMessage((HWND)ppage,WM_USER+200,0,0);
}
//////////////////////////////////////////////////////////////////////////////
ON_MESSAGE(WM_USER+200,InternalMsg)

//////////////////////////////////////////////////////////////////////////////
afx_msg LRESULT InternalMsg(WPARAM wp,LPARAM lp);

///////////////////////////////////////////////////////////////////////////////
void CMyPropPage::InternalMsg(WPARAM wp,LPARAM lp)
{
SetModifiedFlag();
return true;
}


в InternalMsg не попадаю , где я неправ?
Заранее, спасибо


Автор: Олег М 25.8.2004, 14:52
А сообщение приходит в ppage? Кстати, ppage у тебя как объявлен? Если как указатель, то надо (HWND)(*ppage) или, лучше ppage->GetSafeHwnd, или ppage->SendMessage

Автор: Windigo 25.8.2004, 15:20
ppage объявлен так:
CWnd* ppage (то есть какуказатель)

(HWND)(*ppage) - в ::SendMessage заменил, но не помогло, поэтому скорее всего сообщение так и не доходит..

А если заменяю
ppage->SendMessage(WM_USER+200,1,1);
прога вылетает с ошибкой чтения памяти

Автор: Олег М 25.8.2004, 15:38
Цитата(Windigo @ 25.8.2004, 18:20)
CWnd* ppage (то есть какуказатель)

А чему он утебя равен? У тебя сначала неправильно было, к HWND нельзя так преобразовывть, теперь исправил, надеюсь. Проверь pppage->m_hWnd.
Если ppage нормальный
Код

_AFXWIN_INLINE LRESULT CWnd::SendMessage(UINT message, WPARAM wParam, LPARAM lParam)
{
ASSERT(::IsWindow(m_hWnd)); //Скорее всего у тебя здесь вылетает
return ::SendMessage(m_hWnd, message, wParam, lParam);
}

Автор: Windigo 25.8.2004, 16:09
Спасибо - так помогло smile.gif
CWnd* ppage = this->GetParent();
ppage->SendMessage(WM_USER+200,1,1);

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