窗口:获取监视器的数量,包括禁用的

EnumDisplayMonitors列出当前激活的所有监视器。 但是,它似乎没有返回禁用的(即有'扩展我的桌面到这个监视器'的选项)。 我如何计算残疾人数?

好的,首先你必须创建一个设备上下文:

http://msdn.microsoft.com/en-us/library/dd183490(v=VS.85).aspx下面的代码会给你所有的监视器:

 CreateDC(TEXT("DISPLAY"),NULL,NULL,NULL) 

然后你可以调用DeviceContext的EnumDisplayDevices,它将有一个指向DISPLAY_DEVICE结构的指针,该结构包含有关显示设备设置的信息http://msdn.microsoft.com/en-us/library/dd162609(v=VS.85).aspx

每个MSDN:

要查询当前会话中的所有显示设备,请在iDevNum设置为0的情况下循环调用此函数,然后递增iDevNum,直到函数失败。 要选择桌面中的所有显示设备,请仅使用DISPLAY_DEVICE结构中具有DISPLAY_DEVICE_ATTACHED_TO_DESKTOP标志的显示设备。

要获取有关显示适配器的信息,请将lpDevice的EnumDisplayDevices设置为NULL。 例如,DISPLAY_DEVICE.DeviceString包含适配器名称。

要获得显示监视器上的信息,首先调用EnumDisplayDevices并将lpDevice设置为NULL。 然后调用EnumDisplayDevices与lpDevice设置为DISPLAY_DEVICE.DeviceName从第一次调用EnumDisplayDevices和iDevNum设置为零。 然后DISPLAY_DEVICE.DeviceString是监视器名称。

要查询与适配器关联的所有监视器设备,请在lpDevice设置为适配器名称的情况下调用EnumDisplayDevices,iDevNum设置为从0开始,iDevNum设置为递增直到函数失败。 请注意DISPLAY_DEVICE.DeviceName随监视器信息的每次调用而变化,因此您必须保存适配器名称。 当没有适配器的更多监视器时,该功能失败。

我不是一个C ++程序员,但是我必须在白天编写一些显示方式的东西,而我只是想帮助我记得的东西。 WINAPI上我有点生疏。

你有没有检查显示器的显示功能?

我很确定MONITORINFO结构的MONITORINFOF_PRIMARY标志指定哪个监视器是主监视器。 任何具有MONITORINFO或MONITORINFOEX结构的监视器都是“有用的”监视器。

http://msdn.microsoft.com/en-us/library/dd145065(v=VS.85).aspx

至于什么显示器是可用的这个链接可以让你检查这些:
获取显示器信息: http : //msdn.microsoft.com/en-us/library/dd144942(v=VS.85).aspx
枚举显示设备: http : //msdn.microsoft.com/en-us/library/dd162609( VS.85) .aspx
显示设备结构: http : //msdn.microsoft.com/en-us/library/dd183569(v=VS.85).aspx

显示设备结构有一个“DISPLAY_DEVICE_ACTIVE”标志,表示设备是否处于活动状态。