GetClientRect(rect)與 GetClientRect(&rect); 參數(shù)的理解
Posted on 2010-08-28 18:39 幻海藍(lán)夢(mèng) 閱讀(2880) 評(píng)論(0) 編輯 收藏 所屬分類: C++1)CRect rect;
GetClientRect(rect);
2)CRect rect;
GetClientRect(&rect);
....
為什么這兩段代碼的效果一樣??
1.因?yàn)?CRect 重載了到 LPRECT 的操作:
CRect::operator LPRECT( ); GetClientRect(rect); 隱含的調(diào)用了該操作。
摘自 : http://topic.csdn.net/t/20020816/13/946020.html
2.首先要知道 GetClientRect 函數(shù)的原型,如下:
void GetClientRect( LPRECT lpRect ) const;
說(shuō)明這個(gè)函數(shù)的參數(shù)是 LPRECT, 而并非 CRect 或是 CRect* ,那為什么你所說(shuō)的兩種情況都正確呢!
http://msnpiki.msnfanatic.com/index.php/Main_Page-->
s New Roman;"> 1 )、對(duì)于 GetClientRect(rc) ,這里的參數(shù)是 CRect ,因?yàn)?CRect 類里有個(gè) LPRECT 運(yùn)算符重載( operator LPRECT() ),所以當(dāng)傳一個(gè) CRect 變量給這個(gè)函數(shù)的時(shí)候,這個(gè)變量會(huì)自動(dòng)轉(zhuǎn)換成 LPRECT.
2) 、對(duì)于 GetClientRect(&rc) 那就更好理解了,因?yàn)檫€有一點(diǎn), CRect 是從 RECT 繼承的,所以你傳一個(gè) CRect* 給這個(gè)函數(shù)的時(shí)候,它會(huì)自動(dòng)轉(zhuǎn)換成其基類形式( RECT )的地址 , 所以也是對(duì)的!
文章出處:飛諾網(wǎng)(www.firnow.com):http://dev.firnow.com/course/3_program/c++/cppjs/20100630/288201.html