獲取螢幕大小

2021-05-28 04:41:57 字數 3512 閱讀 7279

螢幕的大小有兩種情形:

(1)整個螢幕的大小,包括工具欄的大小。方法是用函式

intwinapigetsystemmetrics(

__in int nindex

);

用法:
int xscreen = getsystemmetrics(sm_cxfullscreen); // screen width
int yscreen = getsystemmetrics(sm_cyfullscreen); // screen heigth
(2)work螢幕的大小,不包括工具欄的大小。方法是用函式
boolwinapisystemparametersinfo(

__in uint uiaction

, __in uint uiparam

, __in_out pvoid pvparam

, __in uint fwinini

);

用法:
rect rtchange = ;

systemparametersinfo(spi_getworkarea,   0, &rtchange,   0);

in code:

using system.runtime.interopservices; // using宣告

// 函式宣告

[dllimport("user32")]

public static extern intgetsystemmetrics(

int nindex

);int winapi getsystemmetrics( __in int

nindex);   下面是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 安全模式啟動  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的值則滑鼠左右鍵交換,否則沒有。

編輯本段

index值

Android獲取螢幕大小

我們在做ui開發通常都會有這樣的需求,取得畫面的大小,以下這段 就能幫你在android平台中取得畫面的大小,如下 1.display display getwindowmanager getdefaultdisplay 2.log.i view height display.getheight 3...

vc 獲取螢幕大小

int with getsystemmetrics sm cxfullscreen int heigh getsystemmetrics sm cyfullscreen 通過上邊兩個函式獲取的是顯示螢幕的大小,及不包括工作列等區域。int cx getsystemmetrics sm cxscree...

獲取裝置螢幕大小

搜了搜網上介紹獲取螢幕大小的方法,有如下 通過windowmanager獲取 displaymetrics dm new displaymetrics getwindowmanager getdefaultdisplay getmetrics dm system.out.println heigth...