日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

MFC窗口位置和大小的获取

發布時間:2025/4/9 编程问答 50 豆豆
生活随笔 收集整理的這篇文章主要介紹了 MFC窗口位置和大小的获取 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

  最近在做一個項目,需要控件隨對話框大小的變化而變化,因此需要準確獲取對話框窗口、控件的大小和位置。

  經過好一番查尋、測試,終于看到了希望。下面是一些獲取窗口位置和大小的函數,示例如下:

1、獲取屏幕分辨率

//下邊兩個函數獲取的是顯示屏幕的大小,但不包括任務欄等區域 int cx = GetSystemMetrics(SM_CXFULLSCREEN); int cy = GetSystemMetrics(SM_CYFULLSCREEN); //下邊這兩個函數獲取的是真正屏幕的大小:屏幕分辨率 int nWidth=GetSystemMetrics(SM_CXSCREEN); //屏幕寬度 int nHeight=GetSystemMetrics(SM_CYSCREEN); //屏幕高度 CString strScreen; strScreen.Format(L"%d,%d",nWidth,nHeight); MessageBox(strScreen);

2、獲取對話框窗體大小及其屏幕坐標

//對話框窗體大小及其屏幕坐標 CRect rectDlg; //法1: GetClientRect(rectDlg);//獲得窗體的大小 //法2: //GetWindowRect(rectDlg);//獲得窗體在屏幕上的位置 //ScreenToClient(rectDlg); CString strDlg; strDlg.Format(L"%d,%d,%d,%d",rectDlg.left,rectDlg.top,rectDlg.Width(),rectDlg.Height()); MessageBox(strDlg);

3、獲取控件大小和位置

//控件大小和位置 CRect rectCtrl; CStatic *p=(CStatic*)GetDlgItem(IDC_STATIC_TEST); p->MoveWindow(100,100,100,100);//更改控件大小并移動其到指定位置 p->GetWindowRect(rectCtrl); this->ScreenToClient(rectCtrl); //GetDlgItem(IDC_STATIC_TEST)->GetClientRect(rectCtrl); CString str; str.Format(L"%d,%d,%d,%d",rectCtrl.left,rectCtrl.top,rectCtrl.Width(),rectCtrl.Height()); MessageBox(str);

總結:

  1、GetSystemMetrics() ?--> ?用于得到被定義的系統數據或者系統配置信息;

  2、GetClientRect() --> ?得到客戶區的位置和大小,一般用于獲取窗口大小;

  3、GetWindowRect() --> ?得到窗口(對話框或控件)的屏幕坐標,一般用于獲取對話框的屏幕坐標或和ScreenToClient()配合使用獲取控件的客戶區坐標;

  4、ScreenToClient() ?--> ?屏幕坐標轉換為客戶區坐標,一般和GetWindowRect()配合使用獲取控件的客戶區坐標;

轉載于:https://www.cnblogs.com/gaohongchen01/p/4596545.html

總結

以上是生活随笔為你收集整理的MFC窗口位置和大小的获取的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。