如何编程判断系统目前使用了双显卡

volcary 2003-08-29 07:55:10
用了enumdisplaydevice 无法正确得到结果,设备类型返回错误
...全文
230 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
volcary 2003-09-01
  • 打赏
  • 举报
回复
失望
volcary 2003-09-01
  • 打赏
  • 举报
回复
devNum 并非是显卡的数目,因为此数目包括一些虚拟显卡,要通过dispDevice.StateFlags
来判断类别,我的问题是dispDevice.StateFlags的值不正确,
everandforever(Forever) 老兄你到底懂不懂那
volcary 2003-09-01
  • 打赏
  • 举报
回复
感谢everandforever(Forever)老兄的古道热肠,问题如您所说,现已经解决,非常感谢:)
everandforever 2003-09-01
  • 打赏
  • 举报
回复
写错了,是 "与" 才对.
if( dispDevice.StateFlags & DISPLAY_DEVICE_PRIMARY_DEVICE == DISPLAY_DEVICE_PRIMARY_DEVICE )
{
//这才说明是 PRIMARY_DEVICE 吧?
}
everandforever 2003-09-01
  • 打赏
  • 举报
回复
我没有做过,也没有硬件可以测试。
___________
老兄,我说过我不懂啦.
StateFlags: It can be any reasonable combination of the following.
#define DISPLAY_DEVICE_PRIMARY_DEVICE 0x00000004

if( dispDevice.StateFlags | DISPLAY_DEVICE_PRIMARY_DEVICE == DISPLAY_DEVICE_PRIMARY_DEVICE )
{
//这才说明是 PRIMARY_DEVICE 吧?
}
everandforever 2003-08-31
  • 打赏
  • 举报
回复
DISPLAY_DEVICE dispDevice;
FillMemory(&dispDevice, sizeof(DISPLAY_DEVICE), 0);
dispDevice.cb = sizeof(DISPLAY_DEVICE);
int devNum = 0;
while( EnumDisplayDevicesA(NULL,devNum,&dispDevice,0))
{
// dispDevice.DeviceString: adapter name
FillMemory(&dispDevice, sizeof(DISPLAY_DEVICE), 0);
dispDevice.cb = sizeof(DISPLAY_DEVICE);
devNum++;
}
// 现在, devNum 就是系统上安装的显卡数目啦.
volcary 2003-08-31
  • 打赏
  • 举报
回复
是按照上面说的作的,代码如下

DEVMODE devmode;
FillMemory(&devmode, sizeof(DEVMODE), 0);
devmode.dmSize = sizeof(DEVMODE);
devmode.dmDriverExtra = 0;
DISPLAY_DEVICE dispDevice;
FillMemory(&dispDevice, sizeof(DISPLAY_DEVICE), 0);
dispDevice.cb = sizeof(DISPLAY_DEVICE);
INT devNum = 0;
BOOL result;
CString strdisp,strcode;
while (result =EnumDisplayDevicesA(NULL,devNum,&dispDevice,0))
{
strdisp.Format("%s %d",dispDevice.DeviceString,dispDevice.StateFlags);
FillMemory(&dispDevice, sizeof(DISPLAY_DEVICE), 0);
dispDevice.cb = sizeof(DISPLAY_DEVICE);
}
其中对于是目前系统使用的显卡片应当是 4 可是dispDevice.StateFlags确实是一个无效的值,很大
flinming 2003-08-30
  • 打赏
  • 举报
回复
up
everandforever 2003-08-30
  • 打赏
  • 举报
回复
我没有做过,也没有硬件可以测试。不过MSDN说可以,你是完全按照它说的做的吗?

19,468

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧