Posted on 2010-08-28 18:39
幻海藍夢 閱讀(2870)
評論(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