GetClientRect相当于GetWindowRect和ScreenToClient区别
From: http://www.cnblogs.com/yongtaiyu/archive/2011/05/18/2049554.html
GetWindowRect是取得窗口在屏幕坐標(biāo)系下的RECT坐標(biāo)(包括客戶區(qū)和非客戶區(qū)),這樣可以得到窗口的大小和相對(duì)屏幕左上角(0,0)的位置。?
GetClientRect取得窗口客戶區(qū)(不包括非客戶區(qū))在客戶區(qū)坐標(biāo)系下的RECT坐標(biāo),可以得到窗口的大小,而不能得到相對(duì)屏幕的位置,因?yàn)檫@個(gè)矩陣是在客戶區(qū)坐標(biāo)系下(相對(duì)于窗口客戶區(qū)的左上角)的。
用GetClientRect返回的RECT結(jié)構(gòu)上左為零, 右下分別對(duì)應(yīng)客戶區(qū)的寬度和高度;
ScreenToClient把屏幕坐標(biāo)系下的RECT坐標(biāo)轉(zhuǎn)換為客戶區(qū)坐標(biāo)系下的RECT坐標(biāo).
我們對(duì)同一個(gè)窗口先GetWindowRect取得一個(gè)RECT,再用ScreenToClient轉(zhuǎn)換到客戶坐標(biāo)系。
然后GetClientRect取得一個(gè)RECT,再用ClientToScreen轉(zhuǎn)換到屏幕坐標(biāo)系。
顯然,GetWindowRect取得的矩陣不小于GetClientRect取得的矩陣。因?yàn)榍罢甙朔强蛻魠^(qū),而后包括了客戶區(qū)。
對(duì)GetWindowRect取得的矩陣ScreenToClient后,矩陣的大小沒有變小,left,top是窗口的左上角的坐標(biāo),相對(duì)窗口客戶區(qū)左上角。
對(duì)GetClientRect取得的矩陣ClientToScreen后,矩陣的大小也沒有變大,新得到的矩陣是窗口客戶區(qū)在屏幕坐標(biāo)系上的RECT。
二、
GetWindowRect 獲取的是整個(gè)window 的rect 包括標(biāo)題欄 之類的周邊. 而且是屏幕坐標(biāo)
GetClientRect 獲取的是客戶區(qū), 建立一個(gè)單文檔程序運(yùn)行起來后。你看到window 中白色的區(qū)域就是客戶區(qū). 而且是客戶坐標(biāo).
ScreenToClient 這個(gè)則是把屏幕坐標(biāo)轉(zhuǎn)換成客戶坐標(biāo).
比如 你的屏幕是1000*1000 大小?
你在100*100 的地方創(chuàng)建了一個(gè) 200*200 窗口?
那么你用GetWindowRect 取得的RECT 就應(yīng)該是 top=100,left=100,right=300,bottom=300.
假如這個(gè)窗口標(biāo)題欄高 10 那么 用GetClientRect 取得的RECT就應(yīng)該是 top=0,left=0,right=200,bottom=190。
現(xiàn)在你在這個(gè)窗口上單擊了一下, 假如是屏幕是的 x=200,y=200 那么 你用ScreenToClient轉(zhuǎn)換后相對(duì)這個(gè)窗口而言x,y 就會(huì)變?yōu)?br /> x=100, y=100
總結(jié)
以上是生活随笔為你收集整理的GetClientRect相当于GetWindowRect和ScreenToClient区别的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python 洪水
- 下一篇: 电信运营商x86服务器定制策略