GetSystemMetrics是一个计算机函数,该函数只有一个参数,称之为「索引」,这个索引有75个标识符,通过设置不同的标识符就可以获取系统分辨率、窗体显示区域的宽度和高度、滚动条的宽度和高度。
The GetSystemMetrics function retrieves various system metrics (widths and heights of display elements) and system configuration settings. Alldimensions retrieved byGetSystemMetrics are inpixels.
GetSystemMetrics函数检索系统各种的指标(显示元素的宽度和高度)以及系统配置设置。所有被GetSystemMetrics 检索出尺寸都是以像素为单位的。
int GetSystemMetrics(
int nIndex // system metric or configuration setting(系统指标或者配置设置)
);
Paramenters:
nIndex:
[in] Specifies the system metric or configuration setting to retrieve. All SM_CX* values are widths. All SM_CY* values are heights. The following values are defined.
参数:
nIndex:
[in] 区分检索的系统指标或者配置设置。所有以SM_CX开头的值是指宽度。所有以SM_CY开头的值是指告诉。 下面是被定义的值。
int i;
i = GetSystemMetrics(SM_CLEANBOOT);//启动方式 0
i = GetSystemMetrics(SM_CMONITORS);//显示器数目 1
i = GetSystemMetrics(SM_CMOUSEBUTTONS);//鼠标上按键的数目 3
i = GetSystemMetrics(SM_CXBORDER);//窗口边框的宽度,3D外观下与SM_CXEDGE值相同 1
i = GetSystemMetrics(SM_CXCURSOR);//光标的宽度 32
i = GetSystemMetrics(SM_CXDLGFRAME);//与SM_CXFIXEDFRAME相同 3
i = GetSystemMetrics(SM_CXDOUBLECLK);//鼠标在某个矩形内连击两次被认为是双击,该矩形的宽度 4
i = GetSystemMetrics(SM_CXDRAG);//鼠标在某个矩形内单击移动被认为是拖曳,该矩形的宽度 4
i = GetSystemMetrics(SM_CXEDGE);//SM_CXBORDER在3D外观下的值 2
i = GetSystemMetrics(SM_CXFIXEDFRAME);//具有title bar和固定border的窗体的border的宽度 3
i = GetSystemMetrics(SM_CXFOCUSBORDER);//DrawFocusRect画出的矩形的左右边框的 1
i = GetSystemMetrics(SM_CXFRAME);//与SM_CXSIZEFRAME相同 4
i = GetSystemMetrics(SM_CXFULLSCREEN);//客户区(工作区)的宽度 1280
i = GetSystemMetrics(SM_CXHSCROLL);//水平滚动条上箭头位图的宽度 17
i = GetSystemMetrics(SM_CXHTHUMB);//水平滚动条滑块的宽度 17
i = GetSystemMetrics(SM_CXICON);//图标的默认宽度,LoadIcon只能载入该宽度和SM_CYICON指定高度的icon 32
i = GetSystemMetrics(SM_CXICONSPACING);//icon view中各icon的所占矩形的宽度,大于等于SM_CXICON 75
i = GetSystemMetrics(SM_CXMAXIMIZED);//最大化顶级窗口的宽度 1288
i = GetSystemMetrics(SM_CXMAXTRACK);//一个具有title bar和sizable的窗口所能达到的最大宽度 1292
i = GetSystemMetrics(SM_CXMENUCHECK);//菜单上位图的宽度 13
i = GetSystemMetrics(SM_CXMENUSIZE);//菜单条按钮的宽度,例如多文档中ChildFrame(最大化时)右上角的关闭按钮 19
i = GetSystemMetrics(SM_CXMIN);//窗体的最小宽度 123
i = GetSystemMetrics(SM_CXMINIMIZED);//最小化窗体的宽度 160
i = GetSystemMetrics(SM_CXMINSPACING);//各个最小化窗体所占的矩形的宽度,大于等于SM_MINIMIZED 160
i = GetSystemMetrics(SM_CXMINTRACK);//窗口能拖拽的最小宽度 123
i = GetSystemMetrics(SM_CXSCREEN);//屏幕宽度 1280
i = GetSystemMetrics(SM_CXSIZE);//title bar上按钮的宽度 25
i = GetSystemMetrics(SM_CXSIZEFRAME);//sizable窗体的横向border的宽度 4
i = GetSystemMetrics(SM_CXSMICON);//推荐的小图标(如title bar上的和icon view中的)的宽度 16
i = GetSystemMetrics(SM_CXSMSIZE);//caption中图标的宽度 17
i = GetSystemMetrics(SM_CXVIRTUALSCREEN);//virutal screen的宽度 1280
i = GetSystemMetrics(SM_CXVSCROLL);//垂直滚动条的宽度 17
i = GetSystemMetrics(SM_CYBORDER);// 1返回以像素值为单位的Windows窗口边框的宽度和高度,如果Windows的为3D形态,则等同于SM_CXEDGE参数
i = GetSystemMetrics(SM_CYCAPTION);// 26以像素计算的普通窗口标题的高度
i = GetSystemMetrics(SM_CYCURSOR);// 32返回以像素值为单位的标准光标的宽度和高度
i = GetSystemMetrics(SM_CYDLGFRAME);// 3等同与SM_CXFIXEDFRAME and SM_CYFIXEDFRAME
i = GetSystemMetrics(SM_CYDOUBLECLK);// 4以像素值为单位的双击有效的矩形区域
i = GetSystemMetrics(SM_CYDRAG);// 4
i = GetSystemMetrics(SM_CYEDGE);// 2以像素值为单位的3D边框的宽度和高度
i = GetSystemMetrics(SM_CYFIXEDFRAME);// 3围绕具有标题但无法改变尺寸的窗口(通常是一些对话框)的边框的厚度
i = GetSystemMetrics(SM_CYFOCUSBORDER);// 1
i = GetSystemMetrics(SM_CYFRAME);// 4 等同于SM_CXSIZEFRAME and SM_CYSIZEFRAME
i = GetSystemMetrics(SM_CYFULLSCREEN);// 744 全屏幕窗口的窗口区域的宽度和高度
i = GetSystemMetrics(SM_CYHSCROLL);// 17 水平滚动条的高度和水平滚动条上箭头的宽度
i = GetSystemMetrics(SM_CYICON);// 32系统缺省的图标的高度和宽度(一般为32*32)
i = GetSystemMetrics(SM_CYICONSPACING);// 75以大图标方式查看Item时图标之间的间距,这个距离总是大于等于
i = GetSystemMetrics(SM_CYMAXIMIZED);// 778处于顶层的最大化窗口的缺省尺寸
i = GetSystemMetrics(SM_CYMAXTRACK);// 812具有可改变尺寸边框和标题栏的窗口的缺省最大尺寸,如果窗口大于这个尺寸,窗口是不可移动的
i = GetSystemMetrics(SM_CYMENU);// 20以像素计算的单个菜单条的高度
i = GetSystemMetrics(SM_CYMENUCHECK);// 13以像素为单位计算的菜单选中标记位图的尺寸
i = GetSystemMetrics(SM_CYMIN);// 34=4+4+26窗口所能达到的最小尺寸
i = GetSystemMetrics(SM_CYMINIMIZED);// 31正常的最小化窗口的尺寸
i = GetSystemMetrics(SM_CYMINSPACING);// 31
i = GetSystemMetrics(SM_CYMINTRACK);// 34最小跟踪距离,当使用者拖动窗口移动距离小于这个值,窗口不会移动
i = GetSystemMetrics(SM_CYSCREEN);// 800以像素为单位计算的屏幕尺寸。
i = GetSystemMetrics(SM_CYSIZE);// 25以像素计算的标题栏按钮的尺寸
i = GetSystemMetrics(SM_CYSIZEFRAME);// 4围绕可改变大小的窗口的边框的厚度
i = GetSystemMetrics(SM_CYSMCAPTION);// 18以像素计算的窗口小标题栏的高度
i = GetSystemMetrics(SM_CYSMICON);// 16像素计算的小图标的尺寸,小图标一般出现在窗口标题栏上
i = GetSystemMetrics(SM_CYSMSIZE);// 17
i = GetSystemMetrics(SM_CYVIRTUALSCREEN);// 800
i = GetSystemMetrics(SM_CYVSCROLL);// 17以像素计算的垂直滚动条的宽度和垂直滚动条上箭头的高度
i = GetSystemMetrics(SM_CYVTHUMB);// 17以像素计算的垂直滚动条中滚动块的高度
0 正常启动
1 安全模式启动
2 网络安全模式启动
SM_CMOUSEBUTTONS 返回值为系统支持的鼠标键数,返回0,则系统中没有安装鼠标。
SM_CXBORDER,
SM_CYBORDER 返回以像素值为单位的Windows窗口边框的宽度和高度,如果Windows的为3D形态,则等同于SM_CXEDGE参数
SM_CXCURSOR,
SM_CYCURSOR 返回以像素值为单位的标准光标的宽度和高度
SM_CXDLGFRAME,
SM_CYDLGFRAME 等同与SM_CXFIXEDFRAME and SM_CYFIXEDFRAME
SM_CXDOUBLECLK,
SM_CYDOUBLECLK 以像素值为单位的双击有效的矩形区域
SM_CXEDGE,SM_CYEDGE 以像素值为单位的3D边框的宽度和高度
SM_CXFIXEDFRAME,
SM_CYFIXEDFRAME 围绕具有标题但无法改变尺寸的窗口(通常是一些对话框)的边框的厚度
SM_CXFRAME,SM_CYFRAME 等同于SM_CXSIZEFRAME and SM_CYSIZEFRAME
SM_CXFULLSCREEN,
SM_CYFULLSCREEN 全屏幕窗口的窗口区域的宽度和高度
SM_CXHSCROLL,
SM_CYHSCROLL 水平滚动条的高度和水平滚动条上箭头的宽度
SM_CXHTHUMB 以像素为单位的水平滚动条上的滑动块宽度
SM_CXICON,SM_CYICON 系统缺省的图标的高度和宽度(一般为32*32)
SM_CXICONSPACING,
SM_CYICONSPACING 以大图标方式查看Item时图标之间的间距,这个距离总是大于等于
SM_CXICON and SM_CYICON.
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_CXMINTRACK,
SM_CYMINTRACK 最小跟踪距离,当使用者拖动窗口移动距离小于这个值,窗口不会移动。
SM_CXSCREEN,
SM_CYSCREEN 以像素为单位计算的屏幕尺寸。
SM_CXSIZE,SM_CYSIZE 以像素计算的标题栏按钮的尺寸
SM_CXSIZEFRAME,
SM_CYSIZEFRAME 围绕可改变大小的窗口的边框的厚度
SM_CXSMICON,
SM_CYSMICON 以像素计算的小图标的尺寸,小图标一般出现在窗口标题栏上。
SM_CXVSCROLL,
SM_CYVSCROLL 以像素计算的垂直滚动条的宽度和垂直滚动条上箭头的高度
SM_CYCAPTION 以像素计算的普通窗口标题的高度
SM_CYMENU 以像素计算的单个菜单条的高度
SM_CYSMCAPTION 以像素计算的窗口小标题栏的高度
SM_CYVTHUMB 以像素计算的垂直滚动条中滚动块的高度
SM_DBCSENABLED 如果为TRUE或不为0的值表明系统安装了双字节版本的USER.EXE,为FALSE或0则不是。
SM_DEBUG 如果为TRUE或不为0的值表明系统安装了debug版本的USER.EXE,为FALSE或0则不是。
SM_MENUDROPALIGNMENT 如果为TRUE或不为0的值下拉菜单是右对齐的否则是左对齐的。
SM_MOUSEPRESENT 如果为TRUE或不为0的值则安装了鼠标,否则没有安装。
SM_MOUSEWHEELPRESENT 如果为TRUE或不为0的值则安装了滚轮鼠标,否则没有安装。(Windows NT only)
SM_SWAPBUTTON 如果为TRUE或不为0的值则鼠标左右键交换,否则没有。