检查枚举显示设备 dwFlags
Checking EnumDisplayDevices dwFlags
目前我有一个函数,我希望它返回活动监视器的数量(通过使用EnumDisplayDevices)。
...
DISPLAY_DEVICE dd;
dd.cb = sizeof(DISPLAY_DEVICE);
while (EnumDisplayDevices(NULL, numberofDeviceAdapters, &dd, EDD_GET_DEVICE_INTERFACE_NAME))
{
if (dd.StateFlags == DISPLAY_DEVICE_ACTIVE)
{
numberOfActiveMonitors++;
}
numberofDeviceAdapters++;
}
return numberOfActiveMonitors;
活动监视器的数量永远不会增加,如何正确检查DISPLAY_DEVICE的州旗?
如果您阅读DISPLAY_DEVICE
数据结构的 MSDN 文档,您会注意到:
州旗
设备状态标志。它可以是以下各项的任何合理组合。
[...]
因此,您应该使用二进制&
(按位 AND)运算符来检查是否在上述数据结构的StateFlags
数据成员中设置了 desidered 标志(在您的情况下为 DISPLAY_DEVICE_ACTIVE
)。
例如:
// Your code:
// if (dd.StateFlags == DISPLAY_DEVICE_ACTIVE)
//
// Change to (use binary AND & operator):
if (dd.StateFlags & DISPLAY_DEVICE_ACTIVE)
{
...
}
这是 Win32/C++ 编程中非常常见的模式,用于检查是否在包含多个标志的DWORD
中设置了给定的二进制标志。
相关文章:
- 将移动设备(iOS和Android)连接到带有QT / C++和镜像显示的VNC服务器
- c ++ 是否有任何用于列出 Windows 驱动程序管理器控制台中显示的设备驱动程序的 Windows API?
- 使用C /Winrt,带有设备的填充列表框,显示其名称
- Cuda 示例正常工作,但我的代码显示没有功能的设备
- 当插入第二个监视器时,全屏Direct3D9设备仅以本机分辨率显示
- 尝试打开显示设备句柄以使用 C++ 更改 Windows XP 上的亮度
- 如何在不考虑会话的情况下获取显示设备信息
- 使用 EVR 直接通过媒体基础显示相机设备捕获的帧
- Cocos2d-x - 安卓 - 某些图像不会以相同的分辨率显示在某些设备上
- 安装程序设备接口错误 259 用于显示
- 使用 WinAPI 附加禁用的显示设备
- Windows,在显示之前过滤鼠标设备输入?对入门有一些疑问
- 检查枚举显示设备 dwFlags
- 使用DirectX获取显示设备输出类型
- Xcode的GDB在设备上安装时显示"Warning: the current language does not match this frame"
- 有没有办法确保连接到注册表中显示的串行端口的设备可以使用
- 在QGraphicsScene上显示来自设备驱动程序的QWidget与本地窗口句柄(HWND)
- 创建内存设备背景信息…对于位图,而不是设备(不是显示)
- 在运行Symbian的移动设备上显示系统信息
- 如何检测何时在触摸设备上显示键盘?