2

在 Windows 平台中,一个窗口有一个名为 SWP_NOACTIVATE 的属性,该属性会导致窗口显示为非活动状态,并且在鼠标单击后,该窗口也不会获得焦点,例如,它对您可以通过鼠标单击键入的虚拟键盘很有用。Mac 中的等效解决方案是什么?换句话说,我怎样才能实现一个不改变焦点的窗口点击呢?谢谢。

4

2 回答 2

4

您在这个问题上添加了“Cocoa”和“Carbon”标签,但由于没有人应该再做 Carbon,我将尝试仅使用 Cocoa 来解决您的问题。

看看这两种NSWindow方法: canBecomeKeyWindowcanBecomeMainWindowNO当您希望窗口无法聚焦时,请考虑将 NSWindow 子类化并为其中一个(或两个)返回“ ”。

还有一个有趣的方法叫做setIgnoresMouseEvents:,它使窗口对鼠标点击和事件“透明”。

于 2012-05-16T14:08:09.847 回答
2

您需要阅读Window Programming Guide中的Key 和 Main Windows。简而言之,创建您自己的 NSWindow 子类并覆盖,以便两者都返回 NO:-canBecomeKeyWindow-canBecomeMainWindow

...充当仅通过鼠标操作拖出的项目的浮动调色板的窗口永远不需要成为关键窗口。这样的窗口可以定义为 NSWindow 的子类,它覆盖方法 canBecomeKeyWindow 和 canBecomeMainWindow 以返回 NO 而不是默认的 YES。以这种方式定义窗口可以防止它成为键或主窗口。

于 2012-05-16T14:08:28.513 回答