1、
SM_ARRANGE:
用于说明系统如何安排最小化窗口,根据显示器的不同系统数据可能有所不同。其包含一个起始位置和方向。关于在程序中怎么使用我还没有见个这样的代码。

起始位置可为下列值之一:
ARW_BOTTOMLEFT:开始在左下角的屏幕(默认值)。
ARW_BOTTOMRIGHT:开始在右下角的屏幕(相当于ARW_STARTRIGHT)。
ARW_HIDE:在屏幕可见区域隐藏并最小化窗口。
ARW_TOPLEFT:从左上角的屏幕上(相当于ARW_STARTTOP)。
ARW_TOPRIGHT:开始在右上角的屏幕上(相当于ARW_STARTTOP |
ARW_STARTRIGHT)。

方向的安排可以为下列值之一:
ARW_DOWN:纵向排列从上到下。
ARW_UP     
:纵向排列从下到上。
ARW_LEFT :水平排列从左到右。
ARW_RIGHT:水平排列从右到左。

2、
SM_CLEANBOOT返回系统的启动方式。
0:正常启动。
1:安全模式启动。
2:网络安全模式启动。
代码例子:
nBoot = GetSystemMetrics(SM_CLEANBOOT);
   switch(nBoot)
   {
   case 0:
   
MessageBox(NULL,TEXT("正常启动系统!"),TEXT("提示"),MB_OK);
   
break;
   case 1:
   
MessageBox(NULL,TEXT("安全模式启动系统!"),TEXT("提示"),MB_OK);
   
break;
   case 2:
   
MessageBox(NULL,TEXT("网络安全模式启动系统!"),TEXT("提示"),MB_OK);
   
break;
   }

3、
SM_CMOUSEBUTTONS:返回值为系统支持的鼠标键数,返回0则系统中没有安装鼠标。
代码:
nMouseButton = GetSystemMetrics(SM_CMOUSEBUTTONS);
  
sprintf(szBuffer,"%d",nMouseButton);
  
MessageBox(NULL,szBuffer,TEXT("系统支持鼠标键数"),MB_OK |
MB_ICONINFORMATION);

4、
SM_CXBORDER、SM_CYBORDER:返回以像素值为单位的WINDOWS边框的宽度和高度,如果是3D形态,则等同于SM_CXEDGE。

代码:
int cxBorder = 0;
int cyBorder = 0;

cxBorder =
GetSystemMetrics(SM_CXBORDER);
   cyBorder =
GetSystemMetrics(SM_CYBORDER);

sprintf(szBuffer,"该窗口的边框长:%d、宽:%d",cxBorder,cyBorder);
  
MessageBox(NULL,szBuffer,TEXT("边框信息"),MB_OK);

5、
SM_CXCURSOR、SM_CYCURSOR:返回以像素为单位的标准光标的宽度和高度。
代码:
   int cxCursor = 0;
   int cyCursor = 0;

cxCursor = GetSystemMetrics(SM_CXCURSOR);
   cyCursor =
GetSystemMetrics(SM_CYCURSOR);

sprintf(szBuffer,"系统标准光标的宽度是:%d、高度是:%d",cxCursor,cyCursor);

MessageBox(NULL,szBuffer,TEXT("光标信息"),MB_OK);

6、
SM_CXDLGFRAME、SM_CYDLGFRAME:等同于SM_CXFIXEDFRAME、SM_CYFIXEDFRAME。

SM_CXFIXEDFRAME、SM_CYFIXEDFRAME:围绕具有标题,但不能改变尺寸的窗口(通常是对话框)的边框厚度。

//这里的厚度和上面边框的长度和宽度分别是窗口的那部分呢
//在我的系统上获得的值分别是cxBorder = cyBorder = 1;cxFrame = cyFrame =
3;
//希望知道的高手指点一下

cxFrame =
GetSystemMetrics(SM_CXDLGFRAME);
   cyFrame =
GetSystemMetrics(SM_CYDLGFRAME);

sprintf(szBuffer,"边框的厚度度是:%d、高度是:%d",cxFrame,cyFrame);
  
MessageBox(NULL,szBuffer,TEXT("边框信息"),MB_OK);

7、
SM_CXDOUBLECLK、SMCYDOUBLECLK:以像素值为单位的双击有效的矩形区域。
代码:
   int cxDoubleRect =
0;
   int cyDoubleRect =
0;

cxDoubleRect = GetSystemMetrics(SM_CXDOUBLECLK);
   cyDoubleRect =
GetSystemMetrics(SM_CYDOUBLECLK);

sprintf(szBuffer,"有效区域宽:%d、高:%d",cyDoubleRect,cyDoubleRect);

MessageBox(NULL,szBuffer,TEXT("有效区信息"),MB_OK);
//结果是cxDoubleRect = 4,cyDoubleRect = 4;

8、
SM_CXFRAME、SM_CYFRAME:等同于SM_CXSIZEFRAME、SM_CYSIZEFRAME
SM_CXSIZEFRAME、SM_CYSIZEFRAME:围绕可改变大小的窗口边框的厚度。

9、
SM_CXFULLSCREEN、SM_CYFULLSCREEN:全屏幕窗口的窗口区域的宽度和高度。

10、
SM_CXHSCROLL、SM_CYHSCROLL:水平滚动条的宽度和水平滚动条上箭头的高度。
代码:

int cxHscroll = 0;
   int cyHscroll = 0;

cxHscroll = GetSystemMetrics(SM_CXHSCROLL);
   cyHscroll =
GetSystemMetrics(SM_CYHSCROLL);

sprintf(szBuffer,"水平滚动条高度:%d、箭头高度:%d",cxHscroll,cyHscroll);

MessageBox(NULL,szBuffer,TEXT("TIP"),MB_OK);

11、
SM_CXHTHUMB:水平滚动条上滑块的宽度

12、
SM_CXICON、SM_CYICON:系统缺省的图标的宽度和高度(一般是32×32)。

13、
SM_CXICONSPACING、SM_CYICONSPACING:以大图标方式查看item时图标之间的距离,这个距离总是大于SM_CXICON和SM_CYICON。

14、
SM_CXMAXIMIZED、SM_CYMAXIMIZED:处于顶层的最大化窗口的缺省尺寸。

15、
SM_CXMAXTRACK、SM_CYMAXTRACK:具有可改变尺寸边框和标题栏窗口的缺省尺寸,如果窗口尺寸大于这个尺寸,窗口是不可移动的。

16、
SM_CXMENUCHECK、SM_CYMENUCHECK:以像素为单位计算菜单选中标记位图的尺寸。

17.、
SM_CXMENUSIZE、SM_CYMENUSIZE:以像素为单位计算菜单栏按钮的尺寸。

18、
SM_CXMIN、SM_CYMIN:窗口所能达到的最小尺寸。

19、
SM_CXMINIMIZED、SM_CYMINIMIZED、正常的最小化窗口的尺寸。

20、
SM_CXMINTRACK、SM_CYMINTRACK:最小跟踪距离,当拖动窗口距离小于这个值时,窗口不会移动。

21、
SM_CXSCREEN、SM_CYSCREEN:以像素为单位计算屏幕尺寸。

22、
SM_CXSIZE、SM_CYSIZE:以像素为单位计算标题栏按钮的尺寸。

23、
SM_CXSMICON、SM_CYSMICON:以像素计算的小图标的尺寸,小图标一般出现在标题栏上

24、
SM_CXVSCROLL,
SM_CYVSCROLL 以像素计算的垂直滚动条的宽度和垂直滚动条上箭头的高度

25、
SM_CYCAPTION 以像素计算的普通窗口标题的高度

26、
SM_CYMENU 以像素计算的单个菜单条的高度

27、
SM_CYSMCAPTION 以像素计算的窗口小标题栏的高度

28、
SM_CYVTHUMB 以像素计算的垂直滚动条中滚动块的高度

29、
SM_DBCSENABLED
如果为TRUE或不为0的值表明系统安装了双字节版本的USER.EXE,为FALSE或0则不是。

30、
SM_DEBUG
如果为TRUE或不为0的值表明系统安装了debug版本的USER.EXE,为FALSE或0则不是。

31、
SM_MENUDROPALIGNMENT
如果为TRUE或不为0的值下拉菜单是右对齐的否则是左对齐的。

32、
SM_MOUSEPRESENT 如果为TRUE或不为0的值则安装了鼠标,否则没有安装。

33、
SM_MOUSEWHEELPRESENT 如果为TRUE或不为0的值则安装了滚轮鼠标,否则没有安装。(Windows NT
only)。

34、
SM_SWAPBUTTON 如果为TRUE或不为0的值则鼠标左右键交换,否则没有。

win32 API中GetSystemMetrics函数的更多相关文章

  1. Win32 API中的user32.dll中的ShowWindow方法参数整理

    在使用ShowWindow方法来设置窗体的状态时,由于不知道参数值,用起来非常容易混乱,所以整理了以下其参数的枚举值,方便以后的的使用.   public class User32API { #reg ...

  2. Win32 API之绘图函数

    AbortPath 抛弃选入指定设备场景中的所有路径.也取消目前正在进行的任何路径的创建工作 AngleArc 用一个连接弧画一条线 Arc 画一个圆弧 BeginPath 启动一个路径分支 Canc ...

  3. Win32 API中使用定时器的三种方法

    转自:http://blog.csdn.net/fancycow/article/details/6676064 1.SetTimer(HWND,UINT,UINT,TIMERPROC);第一个参数设 ...

  4. 【.Net】从.NET平台调用Win32 API

    小序        Win32 API可以直接控制Microsoft Windows的核心,因为API(Application Programming Interface)本来就是微软留给我们直接控制 ...

  5. 深入浅出VC++串口编程之基于Win32 API

    1.API描述 在WIN32 API中,串口使用文件方式进行访问,其操作的API基本上与文件操作的API一致. 打开串口 Win32 中用于打开串口的API 函数为CreateFile,其原型为: H ...

  6. MSDN中回调函数的讲解及其C#例子:用委托实现回调函数

    转自:http://blog.csdn.net/sizheng0320/article/details/1615777 ms-help://MS.MSDNQTR.2003FEB.2052/cpguid ...

  7. delphi 中OutputDebugString 函数的妙用(使用DebugView或者Pascal Analyzer软件,在运行过程中就能监视和捕捉日志,而且通过网络就能监视)

    原文地址 https://www.peganza.com/delphi-and-outputdebugstring.html 曾经想要实时监控您的Delphi应用程序,并能够查看日志消息吗?当然,您始 ...

  8. C# call Win32 api时,-1如何转换为DWORD

    当使用(uint)-1时,编译器会给出警告:常量-1无法转换为uint,使用unchecked语句重写.DWORD在转换为C#类型时为uint,既然无法使用uint强制转型(-1),那就需要其他办法了 ...

  9. 使用Signature Tool自动生成P/Invoke调用Windows API的C#函数声明【转】

    原文链接:https://blog.csdn.net/Donjuan/article/details/3865026在网上看到很多网友在.NET程序中调用Win32 API,或者调用自己的VC DLL ...

随机推荐

  1. 九度OJ 1153:括号匹配问题 (DP)

    时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:5193 解决:2248 题目描述: 在某个字符串(长度不超过100)中有左括号.右括号和大小写字母:规定(与常见的算数式子一样)任何一个左括 ...

  2. ajax工作原理(转)

    在写这篇文章之前,曾经写过一篇关于AJAX技术的随笔,不过涉及到的方面很窄,对AJAX技术的背景.原理.优缺点等各个方面都很少涉及null.这次写这篇文章的背景是因为公司需要对内部程序员做一个培训.项 ...

  3. 一个小公司的前端笔试HTML CSS JS

    网上有这套题的答案,版本也很多,我做了很多参考.本文就当个小笔记,可能有错误,还望指正~ 第1章  Html篇 1. 你做的网页在哪些浏览器测试过?这些浏览器的内核分别是什么? 浏览器类型 内核 Fi ...

  4. 我的Java开发学习之旅------>Java经典排序算法之冒泡排序

    冒泡排序(Bubble Sort)是一种简单的排序算法.它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来.走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已 ...

  5. Java for LeetCode 107 Binary Tree Level Order Traversal II

    Given a binary tree, return the bottom-up level order traversal of its nodes' values. (ie, from left ...

  6. nodejs搭建简单的websocket服务端

    创建websocket服务端使用了nodejs-websocket ,首先要安装nodejs-websocket,在项目的目录下: npm install nodejs-websocket 1.搭建w ...

  7. ios 7 Autolayout bug

    ios 7 Autolayout bug 错误类型:NSInternalInconsistencyException(SIGABRT) 详情:Auto Layout still required af ...

  8. 基于android的GPS移植调用关系【转】

    本文转载自:http://blog.csdn.net/jshazk1989/article/details/6877823 版权声明:本文为博主原创文章,未经博主允许不得转载. http://down ...

  9. matlab之细胞数组

    学习matlab的一个博客:https://blog.csdn.net/smf0504/article/details/51814362 Matlab从5.0版开始引入了一种新的数据类型—细胞( ce ...

  10. BZOJ 2021 [Usaco2010 Jan]Cheese Towers:dp + 贪心

    题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=2021 题意: John要建一个奶酪塔,高度最大为m. 他有n种奶酪.第i种高度为h[i]( ...