獲取螢幕及桌面大小

2021-06-27 11:44:13 字數 2280 閱讀 8659

1. 獲取螢幕大小

方法i:使用getsystemmetrics()

int nwidth = getsystemmetrics(sm_cxscreen);

int nheight = getsystemmetrics(sm_cyscreen);

得到1920*1080

注意:由於某些遊戲會修改解析度,所以會導致原本隱藏的視窗重現,建議使用方法2

例如:實現視窗居中顯示

//螢幕大小

int cx = getsystemmetrics(sm_cxscreen);

int cy = getsystemmetrics(sm_cyscreen);

//視窗居中

crect rt;

getwindowrect(&rt);

setwindowpos(null, (cx - rt.width()) / 2, (cy - rt.height()) / 2, 0, 0, swp_nosize);

//或者用movewindow()

movewindow((cx - rt.width())/2, (cy - rt.height())/2, rt.width(), rt.height());

例如:動態建立的視窗並居中顯示:

//建立視窗

//m_clsinstdlg.domodal(); //不要用模態視窗,會阻塞程式

m_clsinstdlg.create(idd_install_dialog, getdlgitem(idd_menu_dialog));

m_hinstdlg = m_clsinstdlg.m_hwnd;

//設定標題

m_clsinstdlg.settitle(m_strrescfg.sresname);

//視窗居中

int cx = getsystemmetrics(sm_cxscreen);

int cy = getsystemmetrics(sm_cyscreen);

crect rt;

m_clsinstdlg.getwindowrect(&rt);

m_clsinstdlg.setwindowpos(null, (cx - rt.width()) / 2, (cy - rt.height()) / 2, 0, 0, swp_nosize);

//顯示視窗

m_clsinstdlg.showwindow(sw_show);

方法ii: 使用getdesktopwindow(), getwindowrect()

getdesktopwindow()->getwindowrect(m_desktoprect);  

int nwidth = m_desktoprect.width();

int nheight = m_desktoprect.height();

得到1920*1080

2. 獲取桌面大小

crect rectworkarea;

systemparametersinfo(spi_getworkarea, 0, &rectworkarea, spif_sendchange);

int nwidth = rectworkarea.width();

int nheight = rectworkarea.height();

得到 1920*1040(不包括工作列的高度)

例如:實現桌面居中顯示

//桌面大小

crect rectworkarea;

systemparametersinfo(spi_getworkarea, 0, &rectworkarea, spif_sendchange); //桌面大小

//視窗居中

crect rt;

getwindowrect(&rt);

int nx = (rectworkarea.width() - rt.width()) / 2;

int ny = (rectworkarea.height() - rt.nheight()) / 2;

setwindowpos(null, nx, ny, 0, 0, swp_nosize | swp_nozorder | swp_noredraw); //不要新增swp_nomove(會忽略座標設定)

獲取螢幕大小

螢幕的大小有兩種情形 1 整個螢幕的大小,包括工具欄的大小。方法是用函式 intwinapigetsystemmetrics in int nindex 用法 int xscreen getsystemmetrics sm cxfullscreen screen widthint yscreen g...

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...