【问题标题】:CGWindowListCopyWindowInfo, kCGWindowLayer and window levelCGWindowListCopyWindowInfo、kCGWindowLayer 和窗口级别
【发布时间】:2011-04-01 12:58:28
【问题描述】:

CGWindowLevel.h 文件定义了用于设置窗口级别的常量,可用作窗口级别的最大值为 20。但是,如果您使用调用 CGWindowListCopyWindowInfo 检索窗口列表,则可以观察kCGWindowLayer 的值大于 20(25、103 等)。

kCGWindowLayer 和窗口级别不一样吗? 如果它们不相同,我如何获取使用CGWindowListCopyWindowInfo 获得的窗口的窗口级别? 如果它们相同,为什么我们会得到 >20 的值?

【问题讨论】:

    标签: macos window layer quartz-graphics


    【解决方案1】:

    似乎kCGWindowLayer 确实指的是窗口级别,尽管我没有找到任何说明这一点的文档。

    您似乎认为窗口级别最多可以是 20,因为从 kCGBaseWindowLevelKeykCGAssistiveTechHighWindowLevelKey 的枚举,最后一个的值为 20。但这些不是窗口级别,它们是可以使用的键使用CGWindowLevelForKey 查找窗口级别。例如,kCGStatusWindowLevelKey 的值为 9,但 kCGStatusWindowLevel 被定义为 CGWindowLevelForKey(kCGStatusWindowLevelKey),其值为 25。

    【讨论】:

      【解决方案2】:

      没有。 kCGWindowLayer 和窗口级别不相同。您无法直接获得窗口级别。但是你可以做一个如下的技巧。

              CFArrayRef windowArray = CGWindowListCopyWindowInfo(kCGWindowListOptionOnScreenOnly, kCGNullWindowID);
              NSMutableArray *windowsInMap = [NSMutableArray arrayWithCapacity:64];
              NSArray*  windows = (NSArray*)CGWindowListCopyWindowInfo(kCGWindowListOptionOnScreenOnly, kCGNullWindowID);
              NSUInteger count = [windows count];
              for (NSUInteger i = 0; i < count; i++)
              {
                  NSDictionary*   nswindowsdescription = [windows objectAtIndex:i];
                  NSNumber* windowid = (NSNumber*)[nswindowsdescription objectForKey:@"kCGWindowNumber"];
                  if(windowid)
                  {
                             // Entried will be in front to back order.
                  }
              }
              CFRelease(windowArray);
      

      【讨论】:

      • kCGWindowLayer 到底是什么。在document,它只说kCGWindowLayer窗口层号,没有解释窗口层号。
      • MacGeek,您似乎认为窗口级别意味着从前到后顺序的索引,但这不是例如-[NSWindow level] 是关于。
      猜你喜欢
      • 2011-07-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-16
      相关资源
      最近更新 更多