jasmine214--love

只有当你的内心总是充满快乐、美好的愿望和宁静时,你才能拥有强壮的体魄和明朗、快乐或者宁静的面容。
posts - 731, comments - 60, trackbacks - 0, articles - 0

GetClientRect(rect)与 GetClientRect(&rect); 参数的理解

Posted on 2010-08-28 18:39 幻海蓝梦 阅读(2852) 评论(0)  编辑  收藏 所属分类: C++

1)CRect   rect;  

 GetClientRect(rect);  

 

 
2)CRect   rect;  

  GetClientRect(&rect);  

  ....  

  为什么这两段代码的效果一样??

 

1.因为 CRect 重载了到 LPRECT 的操作:   

CRect::operator   LPRECT(   ); GetClientRect(rect); 隐含的调用了该操作。

摘自 : http://topic.csdn.net/t/20020816/13/946020.html

 

2.首先要知道 GetClientRect 函数的原型,如下:   

  void   GetClientRect(   LPRECT   lpRect   )   const;  

  说明这个函数的参数是 LPRECT, 而并非 CRect 或是 CRect* ,那为什么你所说的两种情况都正确呢!   

http://msnpiki.msnfanatic.com/index.php/Main_Page-->

s New Roman;">  1 )、对于 GetClientRect(rc) ,这里的参数是 CRect ,因为 CRect 类里有个 LPRECT 运算符重载( operator   LPRECT() ),所以当传一个 CRect 变量给这个函数的时候,这个变量会自动转换成 LPRECT.  

  2) 、对于 GetClientRect(&rc) 那就更好理解了,因为还有一点, CRect 是从 RECT 继承的,所以你传一个 CRect* 给这个函数的时候,它会自动转换成其基类形式( RECT )的地址 , 所以也是对的!

文章出处:飞诺网(www.firnow.com):http://dev.firnow.com/course/3_program/c++/cppjs/20100630/288201.html


只有注册用户登录后才能发表评论。


网站导航: