gpt4 book ai didi

c++ - 检查 EnumDisplayDevices dwFlags

转载 作者:可可西里 更新时间:2023-11-01 13:44:21 29 4
gpt4 key购买 nike

目前我有一个函数,我希望它返回事件监视器的数量(通过使用 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;

numberOfActiveMonitors 永远不会增加,如何正确检查 DISPLAY_DEVICE 的 StateFlags?

最佳答案

如果您阅读 DISPLAY_DEVICE data structure 的 MSDN 文档,你会注意到:

StateFlags
Device state flags. It can be any reasonable combination of the following.
[...]

因此,您应该使用二进制 &(按位与)运算符 来检查所需的标志(在您的情况下为 DISPLAY_DEVICE_ACTIVE)在上述数据结构的 StateFlags 数据成员中设置。

例如:

// Your code: 
// if (dd.StateFlags == DISPLAY_DEVICE_ACTIVE)
//
// Change to (use binary AND & operator):
if (dd.StateFlags & DISPLAY_DEVICE_ACTIVE)
{
...
}

这是 Win32/C++ 编程中非常常见的模式,用于检查给定的二进制标志是否设置在包含多个标志的 DWORD 中。

关于c++ - 检查 EnumDisplayDevices dwFlags,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26957186/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com