获得WindowRef的界限?

时间:2011-07-06 08:44:34

标签: macos macos-carbon

我正在尝试找到一个Carbon API,它可以从窗口ID给我WindowRef,并且我想要这个windowref有边界?

编辑:我找到了API extern WindowRef HIWindowFromCGWindowID(CGWindowID inWindowID);但我无法使用它。我已经包含了碳标头,并且还将其框架添加到项目中。 HI apis还需要其他东西吗?

感谢任何帮助。 谢谢你的时间。

1 个答案:

答案 0 :(得分:9)

以下应该做 -

        CGRect rect;
        uint32_t windowid[1] = {windowID};
        CFArrayRef windowArray = CFArrayCreate ( NULL, (const void **)windowid, 1 ,NULL);
        CFArrayRef windowsdescription = CGWindowListCreateDescriptionFromArray(windowArray);
        CFDictionaryRef windowdescription = (CFDictionaryRef)CFArrayGetValueAtIndex ((CFArrayRef)windowsdescription, 0);
        if(CFDictionaryContainsKey(windowdescription, kCGWindowBounds))
        {
            CFDictionaryRef bounds = (CFDictionaryRef)CFDictionaryGetValue (windowdescription, kCGWindowBounds);
            if(bounds)
            {
                CGRectMakeWithDictionaryRepresentation(bounds, &rect);
            }
        }
        CFRelease(windowArray);