求取按钮控件在对话框中的相对位置

最近开始学习MFC,之前一直想学,但是却没有狠下心去学。现在工作了,发现还是很有用的,于是利用这个契机,学习下mfc。先看了孙鑫的教科书,他讲的很好,很详细,大致了解了mfc,然后也看了网络上各种牛人的帖子,学习了。

GetWindowRect是取得窗口在屏幕坐标系下的RECT坐标(包括客户区和非客户区),这样可以得到窗口的大小和相对屏幕左上角(0,0)的位置。

    GetClientRect取得窗口客户区(不包括非客户区)在客户区坐标系下的RECT坐标,可以得到窗口的大小,而不能得到相对屏幕的位置,它的top和left都为0,right和botton是宽和高,因为这个矩阵是在客户区坐标系下(相对于窗口客户区的左上角)的。  

    ClientToScreen把客户区坐标系下的RECT坐标转换为屏幕坐标系下的RECT坐标.

    ScreenToClient把屏幕坐标系下的RECT坐标转换为客户区坐标系下的RECT坐标.     我们对同一个窗口先GetWindowRect取得一个RECT,再用ScreenToClient转换到客户坐标系。然后GetClientRect取得一个RECT,再用ClientToScreen转换到屏幕坐标系。显然,GetWindowRect取得的矩阵不小于GetClientRect取得的矩阵。因为前者包含了非客户区,而后包括了客户区。

引自:http://blog.chinaunix.net/u/25372/showart_304363.html

所以要获得一个控件再对话框中的坐标的实现代码是:

CRect lpRec; 
GetDlgItem(IDC_SLIDER_output)->GetWindowRect(&lpRec); 
ScreenToClient(&lpRec);

详细可看http://blog.pfan.cn/miaowei/39345.html


本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/seven407/archive/2010/02/26/5330034.aspx

posted @ 2013-09-21 16:51  jingcheng  阅读(630)  评论(0)    收藏  举报