在Windows平台中,窗口有一个名为SWP_NOACTIVATE的属性,该窗口显示窗口显示为非活动状态,并且在鼠标单击后,该窗口不会获得焦点,例如,您可以通过鼠标单击键入虚拟键盘。 什么是Mac中的等效解决方案?换句话说,如何实现一个不改变焦点的窗口点击它? 感谢。
答案 0 :(得分:4)
你在这个问题上加上了“Cocoa”和“Carbon”标签,但由于 任何人都不再使用Carbon了,我会尝试用Cocoa解决你的问题。
检查这两个NSWindow
方法:canBecomeKeyWindow
和canBecomeMainWindow
。当你希望你的窗口不可聚焦时,考虑对NSWindow进行子类化并为这些事情中的任何一个(或两个)返回“NO
”。
还有一个名为setIgnoresMouseEvents:
的有趣方法,它使窗口对鼠标点击和事件“透明”。
答案 1 :(得分:2)
您需要阅读Key and Main Windows中的Window Programming Guide。简而言之,创建自己的NSWindow子类并覆盖-canBecomeKeyWindow
和-canBecomeMainWindow
,以便两者都返回NO:
...一个充当浮动调色板项目的窗口 通过鼠标操作拖出来永远不需要成为关键窗口。这样的 window可以定义为NSWindow的子类,它覆盖了 方法canBecomeKeyWindow和canBecomeMainWindow返回NO 而不是默认值YES。以这种方式定义窗口可以防止它 从永远成为关键或主要窗口。