VC++获取屏幕大小第三篇 物理大小GetDeviceCaps 下

C#获取屏幕缩放比例 在Windows桌面客户端的开发中,有时会想要精确计算窗口的面积或位置。然而在默认情况下,无论WinForms的Screen.Bounds.Width属性还是WPF中SystemParameters.PrimaryScreenWidth属性,以下图举例,将会返回除以150%的数值1280。这样修改后,Screen.PrimaryScreen.Bounds将获得实际的物理分辨率尺寸,同时你还会发现WinForms程序不糊了。该方法可以获取设备的硬件信息,可以通过第二个参数nIndex来指定要查询的具体信息。 阅读详情

    本篇文章(MoreWindows)将获取屏幕的物理大小后计算屏幕对角线长度并换算成英寸。这样可以方便大家查看自己电脑屏幕是多少英寸的。为了更方便大家使用,本文将提供电脑屏幕大小查看器下载(配源码)下载地址是(欢迎大家试用):http://download.youkuaiyun.com/detail/morewindows/5106270

 

    通常大家在表示电脑、电视、手机等电子产品的屏幕大小时会使用英寸这一长度单位来描述。要注意的一点时,英寸在描述电脑、电视、手机等电子产品的屏幕大小时是指屏幕的对角线长度。

    英寸(inch,缩写为in.)在荷兰语中的本意是大拇指,一英寸就是一节大拇指的长度。当然人的大拇指的长度也是长短不一的。14世纪时,英皇爱德华二世颁布了“标准合法英寸”。其规定为:从大麦穗中间选择三粒最大的麦粒并依次排成一行的长度就是一英寸。

英寸与毫米的换算关系为:

          1英寸 = 25.4毫米

          1毫米 = 0.03937英寸

http://blog.youkuaiyun.com/morewindows/article/details/8610891

 

    根据这一换算公式,可以改写下《VC++获取屏幕大小第二篇物理大小GetDeviceCaps 上》中的代码,让其直接计算出屏幕是多少英寸的。改写后的代码如下:

// 获取屏幕大小 物理大小
#include <stdio.h>
#include <conio.h>
#include <math.h>
#include <windows.h>
int main()
{
	printf("    获取屏幕大小 物理大小\n");        
	printf(" -- By MoreWindows( http://blog.youkuaiyun.com/MoreWindows ) --\n\n");   
	
	int nScreenWidth, nScreenHeight;
	HDC hdcScreen = GetDC(NULL);   //获取屏幕的HDC
	nScreenWidth = GetDeviceCaps(hdcScreen, HORZSIZE);
	nScreenHeight = GetDeviceCaps(hdcScreen, VERTSIZE);
	
	printf("屏幕大小(毫米) 宽:%d 高:%d\n", nScreenWidth, nScreenHeight);
	printf("    下面将屏幕大小由毫米换算到英寸\n");
	const double MILLIMETRE_TO_INCH = 0.03937;
	double fDiagonalLen = sqrt(nScreenHeight * nScreenHeight + nScreenWidth * nScreenWidth);
	printf("屏幕对角线长为:%.2lf毫米 约 %.2lf英寸\n", fDiagonalLen, fDiagonalLen * MILLIMETRE_TO_INCH);
	getch();
	return 0;
}

运行结果如下:

 

呵呵,本人笔记本的屏幕大小是13.64英寸即商家所称的14英寸笔记本。

 

 

根据这份代码可以发布个小程序,供其它人用来查看电脑屏幕大小。可惜由于GetDeviceCaps函数的限制,在Win7系统下该程序检测结果不准确,WinXP系统下基本上可以正确运行。

电脑屏幕大小查看器的下载地址为(附源码):http://download.youkuaiyun.com/detail/morewindows/5106270

 

 

转载请标明出处,原文地址:http://blog.youkuaiyun.com/morewindows/article/details/8610891

欢迎关注微博:http://weibo.com/MoreWindows


 

VC 获取屏幕大小第二篇 物理大小GetDeviceCaps 上 阅读详情

相关推荐

VC++实战:屏幕信息枚举与全局鼠标钩子开发指南

在Windows桌面应用开发中,系统信息获取与全局事件监听是两项基础且关键的技术。其核心原理在于通过操作系统提供的原生API,如GetSystemMetrics、EnumDisplayMonitors等,精确枚举多显示器环境下的屏幕尺寸、分辨率及DPI等参数;同时利用SetWindowsHookEx等钩子机制,实现对鼠标移动、点击等全局输入事件的底层捕获。掌握这些技术对于开发需要精准屏幕适配的自动化测试工具、高精度屏幕取色器、以及全局快捷键管理等应用具有重要价值。本文以VC++与原生Win32 API为例,

掬水月在手,弄花香满衣 620

C#分享辅助类:获取系统DPI缩放倍数跟分辨率大小(PrimaryScreen)

【代码】C#分享辅助类:获取系统DPI缩放倍数跟分辨率大小(PrimaryScreen)可以处理因系统DPI放大缩小导致应用程序界面不匹配。

lyp1215的专栏 1594

VC++ GDI图表绘制实战:从零构建轻量级饼图、柱状图与折线图

在桌面应用开发中,数据可视化是呈现信息的关键技术,其核心在于将抽象数据映射为直观图形。GDI(图形设备接口)作为Windows平台基础的图形绘制API,通过设备上下文(DC)和坐标映射机制,实现了从数据值到屏幕像素的转换。这一技术价值在于其零依赖、完全可控的特性,尤其适用于对部署环境敏感、要求安装包体积小的场景,如工业控制上位机、遗留系统维护等。通过面向对象设计,将图表元素抽象为数据系列、坐标轴和绘图区等组件,并结合双缓冲、坐标映射算法,开发者可以构建出高性能、可定制的图表模块。本文聚焦于在VC++ MFC

weixin_34331102的博客 413

C# API GetDeviceCaps

[DllImport("gdi32.dll")] public static extern int GetDeviceCaps( IntPtr hdc, // handle to DC int nIndex // index of capability ); nIndex: const int DRIVERVERSION = 0; const int...

weixin_30700977的博客 977

VC++ MFC报表打印预览完整实现:从GDI原理到工程实践

在桌面应用开发中,打印功能是衡量软件专业度的重要指标,尤其在金融、医疗等对数据呈现要求严格的行业。其核心原理基于图形设备接口(GDI)的坐标映射与设备上下文(DC)管理,通过逻辑单位与物理像素的转换实现跨设备一致性输出。这项技术的工程价值在于构建稳定、所见即所得的文档输出体系,直接提升用户体验与软件交付质量。典型的应用场景包括数据报表生成、业务单据打印及文档预览等。本文将深入MFC框架的打印回调机制,解析OnPrint绘图、分页计算与CPreviewView定制等关键实现,并探讨如何通过坐标映射解决打印错位

weixin_30855099的博客 317

别再到处找离线包了!Visual Studio 2022 企业版/社区版离线安装保姆级教程(含工作负载选择指南)

本文提供Visual Studio 2022企业版/社区版离线安装的详细教程,包括工作负载选择指南和批量安装优化策略。针对网络隔离或带宽受限环境,介绍如何制作离线安装包、选择合适的工作负载组合,并分享高级技巧如增量更新和自动化部署,帮助团队高效统一开发环境配置。

weixin_28745821的博客 731

VC++获取屏幕大小第二篇 物理大小GetDeviceCaps 上

上一篇《VC++获取屏幕大小第一篇像素大小GetSystemMetrics》中介绍了使用GetSystemMetrics函数来获取屏幕的像素大小,本篇将介绍使用GetDeviceCaps函数来获取屏幕的物理大小。下面来看看GetDeviceCaps函数的用法:函数功能:用于得到被定义的系统数据或者系统配置信息函数原型:获取一些设备数据// By MoreWindows( http://blog.c

MoreWindows Blog 2万+

从零到一:用Python打造你的智能交互桌宠,附完整源码与打包指南

本文详细介绍了如何从零开始使用Python开发智能交互桌宠,涵盖环境配置、窗口创建、动图加载、交互功能实现及打包发布全流程。教程特别适合零基础开发者,通过完整源码和分步指南,帮助读者快速掌握桌面宠物开发技巧,打造个性化AI伴侣。

weixin_29094539的博客 292

GetDeviceCaps()函数相关说明

CDC::GetDeviceCaps()物理长度与屏幕像素间的转换 作用: 读取DC的一些打印区域信息,主要是像素和英寸方面的数据. 声明: GetDeviceCaps(int ) 使用例子: //所有像素数 int pagecx=dc.GetDeviceCaps(HORZRES); int pagecy=dc.GetDeviceCaps(VERTRES); //即每英寸点数

xue_jiang_han2013的专栏 5260

Jetson Nano 【1】入手开箱、烧系统

类似于半开箱哈哈 怀着小期待的心情,屁颠屁颠跑到村口领快递,拿到了这个香喷喷的Jetson Nano 开发板 开箱: 由于太激动了忘记拍点啥,于是在最后留了张全家福 板子的结构: 我觉得这个有必要记录一下,于是去官方文档拿了张图来:官方文档传送 1=SD card 的卡槽,位于第二层板子的背部,也就是大风扇屁股位置 2=40针扩展接头(还没开用) 3=USB的供电口,根据大佬测试(某哩...

椰子奶糖的博客 4194

21天教你学会PCIe专栏(21)--总结和展望

回顾整个课程的主要内容和知识点总结PCIe技术的发展历程和现状展望PCIe技术的未来发展趋势和应用方向分享学习心得和实践经验1.1 课程回顾基础知识:了解了PCIe的基本概念、发展历程、标准和规范。分层结构:学习了PCIe的物理层、数据链路层和事务层的结构和功能。功能和特性:掌握了PCIe的热插拔、电源管理、多功能设备等高级功能。高速接口技术:学习了PCIe 4.0、5.0和未来趋势。实际案例分析:分析了GPU加速器和存储设备的PCIe设计和优化。常见问题和解决方案。

xiaoheshang_123的博客 671

VC++获取屏幕大小第一篇 像素大小GetSystemMetrics

分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.youkuaiyun.com/jiangjunshow也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&

weixin_43417960的博客 372

Python爬虫实战:模拟登录知乎 – 通过加密参数和验证码实现自动登录

通过本篇博客的讲解,我们学习了如何通过 POST请求 和 验证码识别,模拟登录知乎并爬取用户信息、问题数据。随着爬虫技术的发展,面对更复杂的反爬虫机制,我们可以不断调整策略,以绕过这些防护,实现数据的自动化抓取。

2201_76125261的博客 731

VC++获取屏幕大小第一篇 像素大小 GetSystemMetrics

《VC++获取屏幕大小第一篇 像素大小 GetSystemMetrics》和《VC++获取屏幕大小第二篇物理大小GetDeviceCaps 上》和《VC++获取屏幕大小第三篇物理大小GetDeviceCaps下》这三篇文章主要讲解在VC++下获取屏幕大小。这个功能非常简单,也比较实用。       要获取屏幕的像素大小要使用GetSystemMetrics函数。下面就来看看这个函数的用

小米的修行之路 1530

【YOLO11改进 - C3k2融合】C3k2融合动态蛇形卷积(Dynamic Snake Convolution)用于管状结构分割任务

【YOLO11改进 - C3k2融合】C3k2融合动态蛇形卷积(Dynamic Snake Convolution)用于管状结构分割任务

专注于图像领域,主要研究内容包括计算机视觉和深度学习,特别是在图像分类、目标检测和图像生成等方面有深入的研究和实践经验。 517

《QGIS快速入门与应用基础》010:下载过程中常见问题(如网速慢、文件损坏)

针对QGIS下载过程中的常见问题提供了系统解决方案。主要解决下载速度慢(≤100KB/s)和文件损坏两大核心问题:通过切换国内镜像源(如清华大学、阿里云)、使用专业下载工具提升速度;采用MD5/SHA256校验确保文件完整性,并排查存储介质和杀毒软件干扰。文章还包含macOS权限问题、Linux依赖缺失等高频问题的速解方案,并附详细的排查流程图和预防技巧,帮助用户顺利完成QGIS下载。后续将详细介绍安装流程,适合零基础用户参考。

LuckyHanMo的博客 482

VC++ MFC打印预览实战:GDI架构设计与疑难问题解决

在桌面应用开发中,打印与预览功能是基础且关键的需求,其核心在于图形设备接口(GDI)的掌握与设备上下文(DC)的灵活运用。通过理解Windows图形系统的绘制原理,开发者可以实现渲染逻辑与输出设备的解耦,从而构建统一的文档渲染架构。这一技术的核心价值在于确保输出结果的精确控制与资源的高效利用,广泛应用于报表生成、数据分析、工程绘图等需要硬拷贝输出的场景。本文聚焦于VC++ MFC环境,深入探讨如何基于GDI设计高可用的打印预览模块,并针对字体度量不一致、坐标映射偏差等常见疑难问题提供实战解决方案,帮助开发者

weixin_34391445的博客 444

VC++ MFC系统托盘功能完整实现:从API原理到健壮封装

系统托盘是Windows桌面应用程序中实现后台常驻、前台隐身交互模式的核心组件,广泛应用于监控、通讯、下载管理等软件。其技术原理基于Windows Shell提供的标准API,通过NOTIFYICONDATA结构体定义图标属性,并调用Shell_NotifyIcon函数与系统任务栏进行通信。在VC++ MFC开发中,合理封装这一功能能显著提升代码复用性和程序健壮性。本文深入解析了托盘图标的消息响应机制、资源管理策略,并针对多显示器适配、高DPI缩放等实际工程挑战提供了解决方案。通过封装可复用的CSystem

weixin_30632883的博客 414

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

上一篇: VC++获取屏幕大小第二篇 物理大小GetDeviceCaps 上
下一篇: Windows界面编程第六篇 动画启动效果(动画效果显示及隐藏窗口)
MoreWindows
MoreWindows 《白话经典算法》、《秒杀多线程》作者 《白话经典算法》、《秒杀多线程》作者 领域专家: 操作系统技术领域 领域专家: 操作系统技术领域
博客等级 码龄15年 2万+粉丝 157原创
评论 6
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值