0

Firefox のメニュー ボタン ウィンドウと同じように、wm_nclbuttondown ハンドラーでフォーカスを失ったときに閉じるウィンドウを作成したいと考えています。しかし、私はそれをすることができませんでした。新しいウィンドウは、作成直後にフォーカスを失います。

そこで、spy++ を掘り下げたところ、WM_NCLBUTTONDOWN が常にメイン ウィンドウをフォーカスさせることがわかりました。spy++ でログに記録されたメッセージは次のとおりです。

ここに画像の説明を入力

0xb13f2 はメイン ウィンドウの hwnd で、0x46139a は新しいウィンドウの hwnd です。

次に、フォーカスを正しく設定する方法は?

4

1 に答える 1

0

私は多くの方法を試しました:

  1. wm_nclbuttdown を wm_lbuttondown に事前変換します。
  2. すべてのウィンドウ領域を HTCLIENT として nchittest してから、手動で移動とサイズ変更を処理しようとしますが、この変更は大きすぎて続行できません。
  3. wm_nclbuttondown ハンドラーで、sendmessage wm_lbuttondown。
  4. setfocus をたくさん呼び出します。

...

一部は機能しますが、他の問題を引き起こします。最後に、spy++ を使用して firefox のメッセージを記録したところ、左ボタン ダウン メッセージを処理する必要がある領域で nchittest が HTCLIENT を返すようにするだけであることがわかりました。

于 2013-04-01T10:21:15.867 に答える