1

私はMFCライブラリを使用してアプリケーションを開発しており、現在、ユーザーがマウスホイールをスクロールしているときに、コンボボックスコントロールの1つを誤って変更しないようにしようとしています。

CComboBoxクラスから新しいクラスを派生させず、そこでマウスがスクロールするのを防ぐことなく、解決策を探しています。

システムについての私の理解は、WindowsがWM_MOUSEWHEELメッセージを処理するコンボボックスコントロールに渡し(コンボボックスをスクロールする)、次にこれが親コントロールのチェーンに伝播されることです(つまり、それらを私のものCFormViewなどに)、つまり、防ぐことはできませんフォームビューでイベントをキャプチャしてスクロールします。

誰かがこの問題の解決策を持っていますか?前もって感謝します!

4

2 に答える 2

3

いつでもコントロールを派生させ、コントロール自体にメッセージCComboBoxをトラップできます。WM_MOUSEWHEEL次に、フォーム ビューで新しい派生コンボ ボックスを使用するだけです。

派生クラスを作成したくない場合 (プロジェクトにとって変更が大きすぎる場合など)、コンボ ボックスをサブクラス化し、WM_MOUSEWHEELそこにトラップすることができます。

于 2013-02-22T18:33:44.220 に答える
2

メイン ウィンドウ クラスで PreTranslateMessage ハンドラーをオーバーライドし、WM_MOUSEWHEEL メッセージを探します。PreTranslateMessage ハンドラーの pMsg->hwnd ハンドルをコンボボックス ハンドルと比較し、見つかった場合は、メッセージをフィルター処理します。

于 2013-02-23T04:54:32.950 に答える