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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

GetClientRect相当于GetWindowRect和ScreenToClient区别

發布時間:2023/12/9 编程问答 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 GetClientRect相当于GetWindowRect和ScreenToClient区别 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

From: http://www.cnblogs.com/yongtaiyu/archive/2011/05/18/2049554.html


GetWindowRect是取得窗口在屏幕坐標系下的RECT坐標(包括客戶區和非客戶區),這樣可以得到窗口的大小和相對屏幕左上角(0,0)的位置。?
GetClientRect取得窗口客戶區(不包括非客戶區)在客戶區坐標系下的RECT坐標,可以得到窗口的大小,而不能得到相對屏幕的位置,因為這個矩陣是在客戶區坐標系下(相對于窗口客戶區的左上角)的?! ?br /> 用GetClientRect返回的RECT結構上左為零, 右下分別對應客戶區的寬度和高度;

ScreenToClient把屏幕坐標系下的RECT坐標轉換為客戶區坐標系下的RECT坐標.     
我們對同一個窗口先GetWindowRect取得一個RECT,再用ScreenToClient轉換到客戶坐標系。
然后GetClientRect取得一個RECT,再用ClientToScreen轉換到屏幕坐標系。
顯然,GetWindowRect取得的矩陣不小于GetClientRect取得的矩陣。因為前者包含了非客戶區,而后包括了客戶區?!  ?br />
對GetWindowRect取得的矩陣ScreenToClient后,矩陣的大小沒有變小,left,top是窗口的左上角的坐標,相對窗口客戶區左上角?!  ?br />
對GetClientRect取得的矩陣ClientToScreen后,矩陣的大小也沒有變大,新得到的矩陣是窗口客戶區在屏幕坐標系上的RECT。

二、

GetWindowRect 獲取的是整個window 的rect 包括標題欄 之類的周邊. 而且是屏幕坐標

GetClientRect 獲取的是客戶區, 建立一個單文檔程序運行起來后。你看到window 中白色的區域就是客戶區. 而且是客戶坐標.

ScreenToClient 這個則是把屏幕坐標轉換成客戶坐標.
比如 你的屏幕是1000*1000 大小?
你在100*100 的地方創建了一個 200*200 窗口?
那么你用GetWindowRect 取得的RECT 就應該是 top=100,left=100,right=300,bottom=300.
假如這個窗口標題欄高 10 那么 用GetClientRect 取得的RECT就應該是 top=0,left=0,right=200,bottom=190。

現在你在這個窗口上單擊了一下, 假如是屏幕是的 x=200,y=200 那么 你用ScreenToClient轉換后相對這個窗口而言x,y 就會變為
x=100, y=100



總結

以上是生活随笔為你收集整理的GetClientRect相当于GetWindowRect和ScreenToClient区别的全部內容,希望文章能夠幫你解決所遇到的問題。

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