VC获取屏幕分辨率及大小相关(转)
vc得到屏幕的当前分辨率方法: 1.Windows API调用 int width = GetSystemMetrics ( SM_CXSCREEN ); int height= GetSystemMetrics ( SM_CYSCREEN ); 如果想动态自适应分辨率的变化,处理WM_DISPLAYCHANGE消息. 2.获得分辨率 BOOL EnumDisplaySettings( LPCTSTR lpszDeviceName, // display device DWORD iModeNum, // graphics mode LPDEVMODE lpDevMode // graphics mode settings );
改变分辨率 LONG ChangeDisplaySettings( LPDEVMODE lpDevMode, // graphics mode DWORD dwflags // graphics mode options ); 3.用GetDeviceCaps
int GetDeviceCaps( HDC hdc, // handle to the device context int nIndex // index of capability to query );
4.用GetDeviceCaps HDC hdcScreen = GetDC( NULL ); int cx = GetDeviceCaps( hdcScreen, HORZRES ); int cy = GetDeviceCaps( hdcScreen, VERTRES ); DeleteObject( hdcScreen ); 其中nIndex可以取: HORZRES VERTRES 或 分别表示: HORZRES :Width, in pixels, of the screen. VERTRES :Height, in raster lines, of the screen.
也就是设备的分辨率了 5.得到桌面客户区的大小 (1) 最简单,使用API RECT rc; SystemParametersInfo(SPI_GETWORKAREA, 0, (PVOID) &rc, 0); str.Format("%d*%d",rc.right-rc.left,rc.bottom-rc.top); (2)间接计算得到:先用上面的3种方法得到这个屏幕的大小,再减去任务栏的大小(注意:要考虑任务栏是否隐藏的情况) int cx = GetSystemMetrics(SM_CXSCREEN); int cy = GetSystemMetrics(SM_CYSCREEN); 或 HDC hdcScreen = GetDC( NULL ); int cx = GetDeviceCaps( hdcScreen, HORZRES ); int cy = GetDeviceCaps( hdcScreen, VERTRES ); DeleteObject( hdcScreen );
任务栏: CWnd* pTaskWnd = FindWindow( _T("Shell_TrayWnd"), NULL ); if( pTaskWnd ) pTaskWnd->ShowWindow( FALSE ); 任务栏是否隐藏: LONG lStyle = GetWindowLong( pTaskWnd->GetSafeHwnd(), GWL_STYLE ); if( lStyle & WS_VISIBLE ) { //可见 } else { //隐藏 }
///////////////////////////////// VC获取屏幕大小 int with= GetSystemMetrics(SM_CXFULLSCREEN);
int heigh= GetSystemMetrics(SM_CYFULLSCREEN);
通过上边两个函数获取的是显示屏幕的大小,及不包括任务栏等区域。
int cx = GetSystemMetrics( SM_CXSCREEN ); int cy = GetSystemMetrics( SM_CYSCREEN );
这两个函数获取的是真正屏幕的大小。
用前两个函数获取的大小可能是1024*687 而用下边两个获取的就是1024*768 说明 返回与windows环境有关的信息 返回值 Long,取决于具体的常数索引 参数表 参数 类型及说明 nIndex Long,常数,指定欲获取的信息;如下表所示 nIndex常数设置 常数定义 取得信息 SM_ARRANGE 设置windows如何排列最小化窗口的一个标志。参考api32.txt中的ARW常数 SM_CLEANBOOT 指定启动模式。0=普通模式;1=带网络支持的安全模式 SM_CMETRICS 可用系统环境的数量 SM_CMOUSEBUTTON 鼠标按钮(按键)的数量。如没有鼠标,就为零 SM_CXBORDER, SM_CYBORDER 尺寸不可变边框的大小 SM_CXCURSOR, SM_CYCURSOR 标准指针大小 SM_CXDLGFRAME, SM_CYDLGFRAME 对话框边框的大小 SM_CXDOUBLECLK, SM_CYDOUBLECLK 双击区域的大小(参考注解) SM_CXFRAME, SM_CYFRAME 尺寸可变边框的大小(在win95和nt 4.0中使用SM_C?FIXEDFRAME) SM_CXFULLSCREEN, SM_CYFULLSCREEN 最大化窗口客户区的大小 SM_CXHSCROLL, SM_CYHSCROLL 水平滚动条上的箭头大小 SM_CXHTHUMB, SM_CYHTHUMB 滚动块在水平滚动条上的大小 SM_CXICON, SM_CYICON 标准图标的大小 SM_CXICONSPACING, SM_CYICONSPACING 桌面图标之间的间隔距离。在win95和nt 4.0中是指大图标的间距 SM_CXMAXIMIZED, SM_CYMAXIMIZED 最大化窗口的默认尺寸 SM_CXMAXTRACK, SM_CYMAXTRACK 改变窗口大小时,最大的轨迹宽度 SM_CXMENUCHECK, SM_CYMENUCHECK 菜单复选号位图的大小 SM_CXMENUSIZE, SM_CYMENUSIZE 菜单栏上的按钮大小 SM_CXMIN, SM_CYMIN 窗口的最小尺寸 SM_CXMINIMIZED, SM_CYMINIMIZED 最小化的窗口必须填充进去的一个矩形小于或等于SM_C?ICONSPACING SM_CXMINTRACK, SM_CYMINTRACK 窗口的最小轨迹宽度 SM_CXSCREEN, SM_CYSCREEN 屏幕大小 SM_CXSIZE, SM_CYSIZE 标题栏位图的大小 SM_CXSIZEFRAME, SM_CYSIZEFRAME 具有WS_THICKFRAME样式的窗口的大小 SM_CXSMICON, SM_CYSMICON 小图标的大小 SM_CXSMSIZE, SM_CYSMSIZE 小标题按钮的大小 SM_CXVSCROLL, SM_CYVSCROLL 垂直滚动条中的箭头按钮的大小 SM_CYCAPTION 窗口标题的高度 SM_CYKANJIWINDOW Kanji窗口的大小(Height of Kanji window) SM_CYMENU 菜单高度 SM_CYSMCAPTION 小标题的高度 SM_CYVTHUMB 垂直滚动条上滚动块的高度 SM_DBCSENABLED 如支持双字节则为TRUE SM_DEBUG 如windows的调试版正在运行,则为TRUE SM_MENUDropALIGNMENT 如弹出式菜单对齐菜单栏项目的左侧,则为零 SM_MIDEASTENABLED 允许了希伯来和阿拉伯语 SM_MOUSEPRESENT 如安装了鼠标则为TRUE SM_MOUSEWHEELPRESENT 如安装了带轮鼠标则为TRUE;只适用于nt 4.0 SM_NETWORK 如安装了网络,则设置位0。其他位保留未用 SM_PENWINDOWS 如装载了支持笔窗口的DLL,则表示笔窗口的句柄 SM_SECURE 如安装了安全(保密)机制,则为TRUE SM_SHOWSOUNDS 强制视觉提示播放声音 SM_SLOWMACHINE 系统速度太慢,但仍在运行中(System is too slow for effective use but is being run anyway) SM_SWAPBUTTON 如左右鼠标键已经交换,则为TRUE '注意这里 注解 双击区域指定屏幕上一个特定的显示区域,只有在这个区域内连续进行两次鼠标单击,才有可能被当作双击事件处理 其他 常数 SM_ARRANGE, SM_CLEANBOOT, SM_CMETRICS, SM_C?MAXIMIZED, SM_C?MAXTRACK, SM_C?SIZEFRAME, SM_C?SMICON, SM_C?SMSIZE, SM_CYSMCAPTION, SM_SECURE, SM_SHOWSOUNDS, and SM_SLOWMACHINE 未获 NT 3.51 及更早版本的支持
VC获取屏幕分辨率及大小相关(转)的更多相关文章
- VC获取屏幕分辨率大小
//以下两个函数获取的是显示屏幕的大小,不包括任务栏等区域 int screenwidth=GetSystemMetrics(SM_CXFULLSCREEN); int screenheight=Ge ...
- 转:VC++获取屏幕大小第一篇 像素大小GetSystemMetrics
VC++获取屏幕大小第一篇 像素大小 GetSystemMetrics>和<VC++获取屏幕大小第二篇物理大小GetDeviceCaps 上>和<VC++获取屏幕大小第三篇物理 ...
- Qt获取屏幕分辨率
http://my.oschina.net/u/1255773/blog/159557 原 Qt获取屏幕分辨率 发表于1年前(2013-09-06 11:00) 阅读(546) | 评论(0) 3 ...
- Android 获取屏幕分辨率
原文:Android 获取屏幕分辨率 得到一个屏幕尺寸的三种方法如下: // 通过WindowManager获取 DisplayMetrics dm = new Displ ...
- 获取屏幕分辨率(C/C++)
C/C++获取屏幕分辨率的方法 int main(int argc, char* argv[]) { // 需要添加头文件: // #include <Windows.h> system( ...
- 获取屏幕分辨率(C#)
C#获取屏幕分辨率的方法 static void Main(string[] args) { // 控制台程序,需要添加程序集: // using System.Drawing; // using S ...
- C#获取屏幕分辨率率
C#获取屏幕的分辨率 在C#中获取当前屏幕的分辨率的方法 1:rectangle类. 命名空间为:system.Drawing. system.Drawing.Rectangle rec=Scre ...
- JS获取屏幕分辨率以及当前对象大小等
<script type="text/javascript"> function getInfo(){ var s = ""; s += " ...
- android DisplayMetrics 获取屏幕分辨率
Android 提供DisplayMetircs 类可以很方便的获取分辨率.下面介绍 DisplayMetics 类: Andorid.util 包下的DisplayMetrics 类提供了一种关于显 ...
随机推荐
- 【前端vue开发】Hbuilder配置Avalon、AngularJS、Vue指令提示
偶尔也会研究一下前端内容,因为Hbuilder是基于eclipse开发的,所以用起来倍感亲切啊,而且在我尝试使用的几款前端开发工具中,Hbuilder的表现也是相当出色地,可以访问Huilder官网下 ...
- Vue项目之IE下打开页面是空白
原因是:Babel 默认只转换新的 JavaScript 句法(syntax),而不转换新的 API ,比如 Iterator.Generator.Set.Maps.Proxy.Reflect.Sym ...
- Javascript 跨域访问解决方案 总结
在客户端编程语言中,如javascript和ActionScript,同源策略是一个很重要的安全理念,它在保证数据的安全性方面有着重要的意义.同 源策略规定跨域之间的脚本是隔离的,一个域的脚本不能访问 ...
- 关于UrlEncode 一团乱麻的问题,后续彻底理解。Java中的 URLEncoder 与 URLDecoder无bug
很多开放平台都是小白开发的,对这个urlencode理解的不到位,他们总是认为java官方的urlencode有bug,需要 URLEncoder.encode("Hello World&q ...
- SQL2008数据库导出到SQL2000全部步骤过程
2008转到2000的步骤 1. 在sql2008上生成for 2000版本的数据库脚本 -- 打开"对象资源管理器"(没有的话按F8), 连接到你的实例, 右键要转到2000的库 ...
- MySQL学习笔记:计算机服务中找不到MySQL服务
不知道什么原因,连接了远程服务器之后,本地服务就连接不上. 经排查,发现服务中的MySQL服务居然不见,一番搜索之后,在CMD中进入到MySQL安装目录的bin下执行以下语句: mysqld.exe ...
- java遍历ftp文件夹下所有文件(或指定文件下的文件)
import java.io.IOException; import java.io.PrintWriter; import java.util.ArrayList; import org.apach ...
- CCF CSP 201312-4 有趣的数
CCF计算机职业资格认证考试题解系列文章为meelo原创,请务必以链接形式注明本文地址 CCF CSP 201312-4 有趣的数 问题描述 我们把一个数称为有趣的,当且仅当: 1. 它的数字只包含0 ...
- Azkaban(二)CentOS7.5安装Azkaban
1.软件介绍 Azkaban Web 服务器:azkaban-web-server-2.5.0.tar.gz Azkaban Excutor 执行服务器:azkaban-executor-server ...
- Redis(一)Redis简述
一 Redis 概念 Redis是一个开源的使用ANSI C语言编写.支持网络.可基于内存亦可持久化的日志型.Key-Value数据库,和Memcached类似,它支持存储的value类型相对更多,包 ...