MFC中关于CDC::Rectangle的一个小问题


CDC::Rectangle的某一个原型如下:

   
  BOOL Rectangle(LPCRECT lpRect);
 

其中LPCRECT是const RECT*
但是诸如如下所示的调用也能通过编译:

   
  myDC.Rectangle(CRect(p1, p2));
 

其中CRect是RECT的派生类。

这样岂不是把一个对象传入了需要指针作为参数的函数?
补充:CDC::Rectangle没有需要传入对象的重载版本。

mfc C++

jdsxjqy 11 years, 6 months ago

问题已经解决,是CRect实现了LPCRECT()操作符:

   
  ATLTYPES_INLINE CRect::operator LPCRECT() const throw()
  
{
return this;
}

位于atltypes.inl

我爱明日香 answered 11 years, 6 months ago

Your Answer