2009-03-09 4 views
1

커스터마이징하려고하는 CTabCtrl이 있습니다 (페이지를 자동으로 변경하기 위해).하위 및 상위 클래스의 알림 메시지를 처리하는 방법은 무엇입니까?

내 탭 컨트롤에서 ON_NOTIFY_REFLECT(TCN_SELCHANGE, ...)을 처리하는 경우 ON_NOTIFY(TCN_SELCHANGE, ...)은 상위 클래스에서 수신하지 않습니다.

자식 및 부모 클래스에 알림 메시지를 모두 수신하려면 어떻게해야합니까? 현재 내가 수동으로 부모 클래스에 WM_NOTIFY 메시지를 보내는의 "해결 방법"을 사용하고

:

편집
void CMyTabControl::OnSelChange(NMHDR *pHeader, LRESULT *pResult) 
{ 
    const int index = this->GetCurSel(); 
    this->ShowTab(index); 

    const CWnd *const pParent = this->GetParent(); 
    if (pParent != NULL) 
    { 
     *pResult = pParent->SendMessage(WM_NOTIFY, TCN_SELCHANGE, 
      reinterpret_cast<LPARAM>(pHeader)); 
    } 
} 

: 나는 해봤 모두 * pResult = 0 * pResult = 1 만 여전히 부모에게 메시지를 보내지 않습니다. 또한 나는 부모에게 메시지를 보낼 때 거의 무한 루프로 끝나는 것을 보았습니다. (몇 가지 이유로 몇 차례 반복 한 후에 깰 수 있습니다).

답변

2

나는 답을 발견했습니다

http://msdn.microsoft.com/en-us/library/eeah46xd.aspx

은 기본적으로 당신은 부모가 메시지를 해고 할 수 알릴 수 있도록 ON_NOTIFY_REFLECT_EX를 사용하여 다음 함수에서 FALSE를 반환해야합니다.