Objective c CGGetDisplaysWithPoint的最大显示
定义: 根据定义,CGGetDisplaysWithPoint采用4个参数:Objective c CGGetDisplaysWithPoint的最大显示,objective-c,macos,Objective C,Macos,定义: 根据定义,CGGetDisplaysWithPoint采用4个参数: CGPoint对象 表示返回的最大显示数的int32 通过引用传递的可变数组,该数组将填充找到的DisplayID 表示匹配显示计数的int32 语法: CGError CGGetDisplaysWithPoint(CGPoint点、uint32\u t最大显示、CGDirectDisplayID*显示、uint32\u t*匹配显示计数) 这很好,我可以让这个函数工作,但是我很困惑我应该如何处理maxDispla
- CGPoint对象
- 表示返回的最大显示数的int32
- 通过引用传递的可变数组,该数组将填充找到的DisplayID
- 表示匹配显示计数的int32
CGError CGGetDisplaysWithPoint(CGPoint点、uint32\u t最大显示、CGDirectDisplayID*显示、uint32\u t*匹配显示计数)代码>
这很好,我可以让这个函数工作,但是我很困惑我应该如何处理maxDisplays参数
据我所知,如果我将maxDisplays设置为5,那么如果有人有6个显示器,则随机选择的像素有1/6的机会找不到显示器
那么,我们是否只是将maxDisplays设置为不现实的值,比如99,然后再释放阵列?此参数的意义是什么?此参数的意义是防止函数写入数组末尾。您必须告诉它阵列的容量。注意,<代码>显示参数既不是COCKA也不是核心基础可变的数组对象。这是一个C型数组。它是“可变的”,因为它不是“常量”,但它不是一个管理自己存储的对象。您负责管理该存储,并且必须将其容量传达给打算在其中存储数据的任何功能(或以其他方式保证该功能不会溢出)
因此,您的问题应该是如何确定阵列的容量。有两种基本方法:
1) 调用函数传递displays
参数的NULL
,调用maxDisplays
的任意值(最好使用0)。如文件所述,当显示
为NULL
时,maxDisplays
被忽略,函数通过匹配显示计数
输出其边界包含给定点的显示数。然后,分配一个包含(至少)多个元素的数组以用于接收显示ID,并再次调用该函数,将该数组传递给displays
,并将其容量传递给maxDisplays
2) 使用容量为32的阵列。它没有明确的文档记录,但在API中是隐含的,这是支持的最大显示数量。可以使用CGDisplayIDToOpenGLDisplayMask()
将显示ID转换为OpenGL显示掩码。类型CGOpenGLDisplayMask
用于保存OpenGL显示掩码。它被定义为uint32\u t
,一个32位的值。因此,最多可以有32个活动显示器
这种技术在一些苹果文档中使用,如、和。最后一个参数甚至在CGOpenGLDisplayMask
中的位数与最大显示位数之间建立了直接联系。参数的目的是防止函数写入数组末尾。您必须告诉它阵列的容量。注意,<代码>显示参数既不是COCKA也不是核心基础可变的数组对象。这是一个C型数组。它是“可变的”,因为它不是“常量”,但它不是一个管理自己存储的对象。您负责管理该存储,并且必须将其容量传达给打算在其中存储数据的任何功能(或以其他方式保证该功能不会溢出)
因此,您的问题应该是如何确定阵列的容量。有两种基本方法:
1) 调用函数传递displays
参数的NULL
,调用maxDisplays
的任意值(最好使用0)。如文件所述,当显示
为NULL
时,maxDisplays
被忽略,函数通过匹配显示计数
输出其边界包含给定点的显示数。然后,分配一个包含(至少)多个元素的数组以用于接收显示ID,并再次调用该函数,将该数组传递给displays
,并将其容量传递给maxDisplays
2) 使用容量为32的阵列。它没有明确的文档记录,但在API中是隐含的,这是支持的最大显示数量。可以使用CGDisplayIDToOpenGLDisplayMask()
将显示ID转换为OpenGL显示掩码。类型CGOpenGLDisplayMask
用于保存OpenGL显示掩码。它被定义为uint32\u t
,一个32位的值。因此,最多可以有32个活动显示器
这种技术在一些苹果文档中使用,如、和。最后一个甚至在CGOpenGLDisplayMask
中的位数和最大显示位数之间建立了直接联系。我认为它不会工作。当然,很多模仿苹果示例的代码都会崩溃。这是你担心的吗?;)事实上这让我的生活轻松多了我希望它不会起作用。当然,很多模仿苹果示例的代码都会崩溃。这是你担心的吗?;)事实上这让我的生活轻松多了P