Windows プラットフォームでは、ウィンドウには SWP_NOACTIVATE という名前の属性があり、ウィンドウが非アクティブに表示され、マウス クリック後もそのウィンドウはフォーカスされません。たとえば、マウス クリックで入力できる仮想キーボードに役立ちます。Macで同等のソリューションは何ですか? つまり、クリックしてもフォーカスが変わらないウィンドウを実装するにはどうすればよいですか? ありがとう。
2 に答える
あなたはこの質問に「Cocoa」と「Carbon」のタグを付けましたが、誰もCarbon をやるべきではないので、Cocoa だけであなたの質問に答えようとします。
との 2 つのNSWindow
方法 を確認してください。ウィンドウのフォーカスを解除したい場合は、NSWindow をサブクラス化し、これらのいずれか (または両方) に対して " " を返すことを検討してください。canBecomeKeyWindow
canBecomeMainWindow
NO
と呼ばれる興味深いメソッドもあり、setIgnoresMouseEvents:
マウスのクリックやイベントに対してウィンドウを「透明」にします。
Window Programming GuideのKey および Main Windowsを参照してください。簡単に言えば、独自の NSWindow サブクラスとオーバーライドを作成し、両方が NO を返すようにします。-canBecomeKeyWindow
-canBecomeMainWindow
...マウス操作によってのみドラッグされる項目のフローティング パレットとして機能するウィンドウは、キー ウィンドウである必要はありません。そのようなウィンドウは、メソッド canBecomeKeyWindow および canBecomeMainWindow をオーバーライドして、デフォルトの YES の代わりに NO を返す NSWindow のサブクラスとして定義できます。このようにウィンドウを定義すると、そのウィンドウがキー ウィンドウまたはメイン ウィンドウになることがなくなります。