我注意到我的旧Carbon应用程序在取消隐藏应用程序时没有收到kEventWindowDrawContent。一旦我得到kEventWindowExpanded事件,我就可以通过重新绘制所有内容来轻松解决这个问题,但我仍然感到困惑的是,当应用程序从隐藏状态恢复时,为什么我的应用程序没有获取kEventWindowDrawContent事件。
我检查了所有旧的Apple文档,并且没有明确提到当应用程序被取消隐藏时将发送kEventWindowDrawContent,但常识意味着它应该被发送,因为应用程序需要重新绘制。
但是,我在打开窗口时会收到初始的kEventWindowDrawContent消息,因此必须正确安装事件处理程序。
有人记得这件旧碳的东西吗? kEventWindowDrawContent应该是取消隐藏还是不发送?
答案 0 :(得分:0)
这是我从Apple工程师那里得到的答案:
当窗口内容出现时发送kEventWindowDrawContent 无效。当a时,我们默认不会使窗口内容无效 窗口从最小化状态扩展;保留窗口缓冲区 窗口最小化时有效(以便任何绘图进入 窗口将反映在窗口的Dock tile中,所以假定它 除非应用明确无效,否则没有任何理由 重绘窗口只是因为它已被扩展。
换句话说:应用程序即使在最小化时仍可以绘制到窗口。当窗口再次展开时,它将被缓冲并自动绘制。因此,在这种情况下不会发送kEventWindowDrawContent,因为窗口缓冲区未被无效。