2009-03-09 19 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を返す必要があります。

関連する問題