CListCtrl クラスがあり、ユーザーがサブ項目の 1 つを選択すると、そのサブ項目の上に CComboBox が表示され、ユーザーはそこから選択できます。
しかし、私には問題があります。ユーザーが選択を行ったら、コンボ ボックスを非表示にする必要があります (つまり、CBN_SELCHANGE をインターセプトします)。問題は、CComboBox を CListCtrl の子にする必要があることです (そうしないと、コンボ ボックスを一番上に設定しても、リストがコンボ ボックスの上に描画されるという奇妙な問題が発生します)。そのため、CBN_SELCHANGE メッセージがリスト ビューに送信され、当然のことながら、それは無視されます。リストビューでそのメッセージを親ウィンドウに渡すにはどうすればよいですか。
CBN_SELCHANGE メッセージを傍受して親ウィンドウに渡すだけの独自の CListCtrl クラスを本当に派生させる必要があるのでしょうか? OnWndMsg ハンドラーを作成するよりも良い方法はありますか?
助けてくれてありがとう!
編集:このコードは機能します
class CPassThroughListCtrl : public CListCtrl
{
protected:
    virtual BOOL OnWndMsg(UINT message, WPARAM wParam, LPARAM lParam, LRESULT* pResult)
    {
        if ( message == WM_COMMAND )
        {
            GetParent()->SendMessage( message, wParam, lParam );
        }
        return CListCtrl::OnWndMsg( message, wParam, lParam, pResult );
    }
public:
    CPassThroughListCtrl()
    {
    };
};
しかし、これを行うためのより良い方法があれば本当に知りたいです。