1

モードレス ダイアログのある画面で非常に奇妙な動作が発生し、解決策が見つかりません。

ビュー内のボタンをクリックして、モードレス ダイアログを開きます。ダイアログはモーダルではないため、ダイアログが開いている間、このビューで他のボタンをクリックできるはずです。でもできないんです。実際、編集、ボタンなどのコントロールにフォーカスを置くことはできません。

ビューが取得しているメッセージを確認しましたが、WM_LBUTTONDOWN メッセージが表示されないようです。ただし、WM_LBUTTONUP メッセージは受け取ります。

さらに奇妙なことに、これは Windows 7 64 ビット (Windows XP でこの問題は報告されておらず、長い間使用されています) と一部のコンピューターでのみ発生します。しかし、私はその理由を見つけることができず、これらのコンピューターでなぜそれが起こるのかについての手がかりがありません.

誰も手がかりを持っていますか?どこかを見始めますか?

ありがとう。

ハビエル

4

2 に答える 2

1

難しい質問でした。この問題は、たまたまダイアログのカスタム実装にありました。MFC2008 ビジュアル スタイルを使用して非クライアント領域を描画し、ビジュアル マネージャーに対して OnNcActivate を呼び出すと、Aero およびデスクトップ ウィンドウ マネージャーがアクティブな場合に FALSE が返されます。そのため、ダイアログはコントロールをその子コントロールに解放していませんでした。

私が言ったようにかなりトリッキーです.....どこかで誰かが同様の問題を抱えている場合に備えて、どこに問題があるかをお知らせします. 私はそれを理解しようとして2日を失いました。

ありがとう。

ハビエル

于 2011-11-08T15:35:28.550 に答える
1

WM_NCACTIVATEあなたは間違った方法で対処しなければなりません。wparam isTRUEで受信したときに、親ウィンドウ プロシージャが返されることを確認します。WM_NCACTIVATEFALSE

于 2012-02-22T10:13:00.060 に答える