0

図のような MFC 申請書があります。

パーツの向き

そして、なぜマウスホイールが「Base angle:」フィールド (スピン コントロールを制御するため) で機能していたのに、「Angle」フィールドと「Range」フィールドでは機能していなかったのか疑問に思っていました。スピンボタンを直接クリックすると、完全に機能しました。

Nesting フォームの "Base angle" フィールドと "±" フィールドでも同じことが起こっていました。

ネスティング

私の仮説:フィールドがグループボックス内にあるために発生しています

テストのために行ったこと: 非作業フィールドが重ならないように、teo from のグループボックスの寸法を変更しました。

パーツの向きが変更されました

ネスティングが変更されました

結果: パーツの方向ダイアログのコントロールでマウス ホイールが機能するようになりました。しかし、Nesting ダイアログでは、動作を拒否し続けました。

注: テキスト ボックスは CEdits です。それらは CString 変数を使用した DDX です。部品の向きはモーダル ダイアログです。ネスティングは、CMFCTabControl 内、CDialogBar 内、CDockablePane 内、CMainFrame 内のフォームです (これは CFrameWndEx から派生したものです)。

さて、私の推測: Part Orientation Dialog フォームの場合、グループボックスがマウス ホイール イベントを食べているのではないかと思います。Nesting Dialog については、DockablePane がマウスホイール イベントを食べていると思われます。または、私が設計したペインのレイアウトによって作成された暗黙の CTabbed ペインかもしれません。またはメインフレーム。

私の質問は次のとおりです:グループボックス内にあるスピンボタン制御のテキストボックスでマウスホイールを機能させるにはどうすればよいですか? 私のアプリダイアログには、このようなケースが他にもたくさんあります。

マウスホイールの動きを誰が処理するかを決める方法はありますか? 同じ質問が、グループボックス領域が削除され、マウス ホイールがスピンボタンを動かさないネスト フォーム コントロールにも当てはまります。

前もって感謝します、セルジオ

4

1 に答える 1

0

これの最初のステップは、ここで WizMouse と呼ばれる小さなソフトウェアを無効にすることでした。部品方向ダイアログのスピナー制御テキストボックスで、マウスホイールがすぐに機能するようになりました。

他のものを機能させるには、スピナーの RC 定義を次のように変更する必要がありました。

UDS_ARROWKEYS

UDS_SETBUDDYINT | UDS_AUTOBUDDY | UDS_ARROWKEYS | UDS_NOTHOUSANDS | UDS_HOTTRACK

これによりマウス ホイールが動きましたが、望ましくない方法でした: 1 単位ずつステップし、上に移動すると減少し、上限は 100 でした!

なんで?なぜなら、UDN_DELTAPOS を処理してスピナーのオフセットを操作する関数があるからです。5.0 のデルタを持つ double として値をステップするように定義します。これは、2 つのスピナー ボタンを直接クリックしたときにも発生していました。

その関数では、*pResult を 0 ではなく 1 に設定するだけで済みました。

今、すべてが正常に動作します:)

ありがとう、もう一度。

于 2013-04-05T13:57:09.783 に答える