获取当前桌面分辨率的奇怪问题

PC_9527 2015-06-17 05:29:55
想取得当前桌面的分辨率,发生奇怪问题,有一部分机器始终无法取得正确的分辨率,无论当前分辨率设置的是多少,它总是取回
1024*768这个值,这些机器正确安装了显卡驱动,并且在自己的显示器上显示正常。

用了三个方法去取值,都是一样的。

GetWindowRect

GetSystemMetrics

EnumDisplaySettings
...全文
506 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
Easy28181 2018-01-04
  • 打赏
  • 举报
回复
你好,这个问题最终确定了是什么原因引起的吗 需要怎样解决呢 我这边也正好遇到了类似的问题
fy553953900 2017-12-27
  • 打赏
  • 举报
回复
DPI不是100
schlafenhamster 2015-06-23
  • 打赏
  • 举报
回复
EnumDisplaySettings(NULL, ENUM_CURRENT_SETTINGS, &devmode);
zgl7903 2015-06-23
  • 打赏
  • 举报
回复
printscr 贴图到画图板上,看看文件尺寸属性是多大分辨率?
PC_9527 2015-06-18
  • 打赏
  • 举报
回复
引用 8 楼 zhao4zhong1 的回复:
使用驱动精灵软件升级显卡驱动?
因为是一部分机器出问题,目前还在排查原因。我也有点怀疑是驱动的问题,我试图在自己的机器上模拟这样的错误,在卸载掉显卡驱动后的确是获取错误。但是出问题的机器显卡驱动是安装好的。
赵4老师 2015-06-18
  • 打赏
  • 举报
回复
使用驱动精灵软件升级显卡驱动?
worldy 2015-06-17
  • 打赏
  • 举报
回复
驱动程序有问题?
PC_9527 2015-06-17
  • 打赏
  • 举报
回复
枚举是可以的,但是我要取当前屏幕的正确分辨率。
lx624909677 2015-06-17
  • 打赏
  • 举报
回复
int nFuCX = GetSystemMetrics(SM_CXSCREEN); int nFuCY = GetSystemMetrics(SM_CYSCREEN); 如何还不行用下面的方法枚举下所有显示模式,只看枚举部分就行,其余的是我自己用到的,没改 flag = ::EnumDisplaySettings( NULL, i, &dmSettings); if( 0 != flag ) { // 成功获得显示模式 str.Format(LanguageGetText(L"DesktopLayout",L"ComboResol"), dmSettings.dmPelsWidth, dmSettings.dmPelsHeight); if(m_comboResolution.FindString(0,str) == -1) { if (dmSettings.dmPelsWidth <= nFuCX && dmSettings.dmPelsHeight <= nFuCY) { Pels[iCount].dmPelsWidth = dmSettings.dmPelsWidth; Pels[iCount].dmPelsHeight = dmSettings.dmPelsHeight; // Pels[iCount].dmBitsPerPel = dmSettings.dmBitsPerPel; m_comboResolution.AddString(str); if( dmSettings.dmPelsWidth == m_pRdpCfg->dmPelsWidth && dmSettings.dmPelsHeight == m_pRdpCfg->dmPelsHeight) iSel = iCount; iCount++; } } }
PC_9527 2015-06-17
  • 打赏
  • 举报
回复
引用 3 楼 zgl7903 的回复:
 
  HDC hDC = GetDC(NULL);
  int cx = GetDeviceCaps(hDC, HORZRES);
  int cy = GetDeviceCaps(hDC, VERTRES);
  ReleaseDC(NULL, hDC);
刚试了,也是如此,真是奇怪了
zgl7903 2015-06-17
  • 打赏
  • 举报
回复
 
  HDC hDC = GetDC(NULL);
  int cx = GetDeviceCaps(hDC, HORZRES);
  int cy = GetDeviceCaps(hDC, VERTRES);
  ReleaseDC(NULL, hDC);
PC_9527 2015-06-17
  • 打赏
  • 举报
回复
引用 1 楼 zhao4zhong1 的回复:
可能你运行在虚拟机中或64位系统下调用32位的API了。
不是虚拟机,32位的系统。
赵4老师 2015-06-17
  • 打赏
  • 举报
回复
可能你运行在虚拟机中或64位系统下调用32位的API了。

19,468

社区成员

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

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