Carbon应用程序在取消隐藏时不会收到kEventWindowDrawContent

时间:2015-04-09 19:17:57

标签: macos-carbon

我注意到我的旧Carbon应用程序在取消隐藏应用程序时没有收到kEventWindowDrawContent。一旦我得到kEventWindowExpanded事件,我就可以通过重新绘制所有内容来轻松解决这个问题,但我仍然感到困惑的是,当应用程序从隐藏状态恢复时,为什么我的应用程序没有获取kEventWindowDrawContent事件。

我检查了所有旧的Apple文档,并且没有明确提到当应用程序被取消隐藏时将发送kEventWindowDrawContent,但常识意味着它应该被发送,因为应用程序需要重新绘制。

但是,我在打开窗口时会收到初始的kEventWindowDrawContent消息,因此必须正确安装事件处理程序。

有人记得这件旧碳的东西吗? kEventWindowDrawContent应该是取消隐藏还是不发送?

1 个答案:

答案 0 :(得分:0)

这是我从Apple工程师那里得到的答案:

  

当窗口内容出现时发送kEventWindowDrawContent   无效。当a时,我们默认不会使窗口内容无效   窗口从最小化状态扩展;保留窗口缓冲区   窗口最小化时有效(以便任何绘图进入   窗口将反映在窗口的Dock tile中,所以假定它   除非应用明确无效,否则没有任何理由   重绘窗口只是因为它已被扩展。

换句话说:应用程序即使在最小化时仍可以绘制到窗口。当窗口再次展开时,它将被缓冲并自动绘制。因此,在这种情况下不会发送kEventWindowDrawContent,因为窗口缓冲区未被无效。