複製鏈接
請複製以下鏈接發送給好友

GetSystemMetrics

鎖定
GetSystemMetrics是一個計算機函數,該函數只有一個參數,稱之為「索引」,這個索引有75個標識符,通過設置不同的標識符就可以獲取系統分辨率、窗體顯示區域的寬度和高度、滾動條的寬度和高度。
外文名
GetSystemMetrics
所屬學科
計算機
釋    義
一個計算機函數

目錄

int WINAPI GetSystemMetrics( __in intnIndex);
下面是GetSystemMetrics函數參數nIndex的定義:
SM_ARRANGE 標誌用於説明系統如何安排最小化窗口..詳細請參看下方備註.:
根據顯示器顯示的不同,系統數據可能有所不同.
該SM_ARRANGE設置指定系統如何安排最小化窗口,幷包含一個起始位置和方向。起始位置可為下列值之一。
Value
Meaning
ARW_BOTTOMLEFT
開始在左下角的屏幕(默認位置) 。
ARW_BOTTOMRIGHT
開始在右下角的屏幕上。相當於ARW_STARTRIGHT.
ARW_HIDE
在屏幕可見區域,隱藏並最小化窗口。.
ARW_TOPLEFT
從左上角的屏幕上。相當於ARV_STARTTOP.
ARW_TOPRIGHT
相當於ARW_STARTTOP | SRW_STARTRIGHT 。
方向的安排可以為下列值之一。
Value
Meaning
ARW_DOWN
縱向排列,從上到下。
ARW_LEFT
水平排列,從左到右。
ARW_RIGHT
水平排列,從右到左。
ARW_UP
縱向排列,從下到上。
SM_CLEANBOOT 返回系統啓動方式
0 正常啓動
1 安全模式啓動
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_DIGITIZER 如果當前操作系統啓動了平板電腦輸入服務,則非零;否則為0。
SM_IMMENABLED 如果啓用了輸入法管理器/輸入法編輯器功能,則非零;否則為 0。
SM_MAXIMUMTOUCHES 如果系統中有數字化儀,則非零;否則為 0。
SM_MENUDROPALIGNMENT 如果為TRUE或不為0的值下拉菜單是右對齊的否則是左對齊的。
SM_MOUSEPRESENT 如果為TRUE或不為0的值則安裝了鼠標,否則沒有安裝。
SM_MOUSEWHEELPRESENT 如果為TRUE或不為0的值則安裝了滾輪鼠標,否則沒有安裝。(Windows NT only)
SM_SWAPBUTTON 如果為TRUE或不為0的值則鼠標左右鍵交換,否則沒有。
SM_TABLETPC 如果當前操作系統Tablet PC Input 服務已啓動,則非零;否則為 0。

GetSystemMetricsindex值

SM_CXSCREEN = 0 'X Size of screen
SM_CYSCREEN = 1 'Y Size of Screen
SM_CXVSCROLL = 2 'X Size of arrow in vertical scroll bar.
SM_CYHSCROLL = 3 'Y Size of arrow in horizontal scroll bar
SM_CYCAPTION = 4 'Height of windows caption
SM_CXBORDER = 5 'Width of no-sizable borders
SM_CYBORDER = 6 'Height of non-sizable borders
SM_CXDLGFRAME = 7 'Width of dialog box borders
SM_CYDLGFRAME = 8 'Height of dialog box borders
SM_CYHTHUMB = 9 'Height of scroll box on horizontal scroll bar
SM_CXHTHUMB = 10 ' Width of scroll box on horizontal scroll bar
SM_CXICON = 11 'Width of standard icon
SM_CYICON = 12 'Height of standard icon
SM_CXCURSOR = 13 'Width of standard cursor
SM_CYCURSOR = 14 'Height of standard cursor
SM_CYMENU = 15 'Height of menu
SM_CXFULLSCREEN = 16 'Width of client area of maximized window
SM_CYFULLSCREEN = 17 'Height of client area of maximized window
SM_CYKANJIWINDOW = 18 'Height of Kanji window
SM_MOUSEPRESENT = 19 'True is a mouse is present
SM_CYVSCROLL = 20 'Height of arrow in vertical scroll bar
SM_CXHSCROLL = 21 'Width of arrow in vertical scroll bar
SM_DEBUG = 22 'True if deugging version of windows is running
SM_SWAPBUTTON = 23 'True if left and right buttons are swapped.
SM_CXMIN = 28 'Minimum width of window
SM_CYMIN = 29 'Minimum height of window
SM_CXSIZE = 30 'Width of title bar bitmaps
SM_CYSIZE = 31 'height of title bar bitmaps
SM_CXMINTRACK = 34 'Minimum tracking width of window
SM_CYMINTRACK = 35 'Minimum tracking height of window
SM_CXDOUBLECLK = 36 'double click width
SM_CYDOUBLECLK = 37 'double click height
SM_CXICONSPACING = 38 'width between desktop icons
SM_CYICONSPACING = 39 'height between desktop icons
SM_MENUDROPALIGNMENT = 40 'Zero if popup menus are aligned to the left of the memu bar item. True if it is aligned to the right.
SM_PENWINDOWS = 41 'The handle of the pen windows DLL if loaded.
SM_DBCSENABLED = 42 'True if double byte characteds are enabled
SM_CMOUSEBUTTONS = 43 'Number of mouse buttons.
SM_CMETRICS = 44 'Number of system metrics
SM_CLEANBOOT = 67 'Windows 95 boot mode. 0 = normal, 1 = safe, 2 = safe with network
SM_CXMAXIMIZED = 61 'default width of win95 maximised window
SM_CXMAXTRACK = 59 'maximum width when resizing win95 windows
SM_CXMENUCHECK = 71 'width of menu checkmark bitmap
SM_CXMENUSIZE = 54 'width of button on menu bar
SM_CXMINIMIZED = 57 'width of rectangle into which minimised windows must fit.
SM_CYMAXIMIZED = 62 'default height of win95 maximised window
SM_CYMAXTRACK = 60 'maximum width when resizing win95 windows
SM_CYMENUCHECK = 72 'height of menu checkmark bitmap
SM_CYMENUSIZE = 55 'height of button on menu bar
SM_CYMINIMIZED = 58 'height of rectangle into which minimised windows must fit.
SM_CYSMCAPTION = 51 'height of windows 95 small caption
SM_MIDEASTENABLED = 74 'Hebrw and Arabic enabled for windows 95
SM_NETWORK = 63 'bit o is set if a network is present.
SM_SECURE = 44 'True if security is present on windows 95 system
SM_SLOWMACHINE = 73 'true if machine is too slow to run win95.
SM_IMMENABLED = 82 Nonzero if Input Method Manager/Input Method Editor features are enabled; otherwise, 0.
SM_TABLETPC = 86 Nonzero if the Tablet PC Input service is started; otherwise, 0.
SM_DIGITIZER = 94 Nonzero if the Tablet PC Input service is started; otherwise, 0.
SM_MAXIMUMTOUCHES = 95 Nonzero if there are digitizers in the system; otherwise, 0.

GetSystemMetrics用法

GetSystemMetrics函數可以獲取系統分辨率,但這只是其功能之一,GetSystemMetrics函數只有一個參數,稱之為「索引」,這個索引有75個標識符,通過設置不同的標識符就可以獲取系統分辨率、窗體顯示區域的寬度和高度、滾動條的寬度和高度。
為了使GetSystemMetrics的功能,我們以獲取系統分辨率為例,並將其中的兩個值用TextOut輸出到窗體中。
第一步:用GetSystemMetrics獲取屏幕的寬度和高度
1. int x, y;
2. x = GetSystemMetrics(SM_CXSCREEN);//屏幕寬度
3. y = GetSystemMetrics(SM_CYSCREEN);//屏幕高度
第二步:用TextOut輸出分辨率
因為x和y的值是int類型,所以無法用TextOut直接輸出,需要藉助wsprintf函數,在C中,可以用printf函數直接將字符串輸出到屏幕上,但wsprintf是將字符串輸出到一個char字符數組中,而且wsprintf會返回輸出字符串的長度。
1.TCHAR szBuffer[10];
2.int x =1024;
3.int y =768;
4.int iLength;
5.iLength = wsprintf(szBuffer, TEXT("%5d"),x);
小提示:szBuffer數組的長度一定要大於x的長度,否則不能輸出。
以上這段代碼,是用wsprintf將x的值存入szBuffer中,然後在iLength中存放x的長度。這一步實際上解決了兩個問題,將int類型的屏幕寬度轉為了TCHAR類型,TextOut函數可以直接輸出TCHAR類型字符串,而且獲取了字符串的長度,那麼我們就可以用TextOut函數在窗體中輸出屏幕的寬度:
TextOut(hdc, 0, 0, szBuffer, iLength);

GetSystemMetrics要求

最低支持的客户端
Windows 2000 Professional [desktop apps only]
最低支持的服務器端
Windows 2000 Server [desktop apps only]
頭文件
Winuser.h (include Windows.h)
User32.lib
DLL
User32.dll