hur.cn - 华软网

 热门搜索

很基础的一个问题,求高人给个答案

  作者:未知    来源:网络    更新时间:2010/12/8
 孙鑫 vc++ 深入详解里第四章 绘图例程中 有这么几句:

    -----------
CBrush brush(RGB(255,0,0));
CClientDC dc(this);
dc.FillRect(CRect(m_ptOrigin,point),&brush);
  -------

其中函数 FillRect 的原型为:void FillRect( LPCRECT lpRect, CBrush* pBrush ),它的第一个参数为CRect指针类型,然则传送参数时是FillRect(CRect(m_ptOrigin,point),&brush)这类形式,CRect(m_ptOrigin,point)这样定义CRect类对象能够吗?
---华软 网友回答---
能够啊 你看详细介绍
http://blog.csdn.net/shanshuigulang/archive/2008/07/11/2638879.aspx
---华软网友回复---
当然能够,自己运行下就知道了
---华软网友回复---
产生一个临时对象
---华软网友回复---
能够,用的是这个构造函数
CRect( POINT topLeft, POINT bottomRight );
其中topleft 是矩形左上角的点,
bottomright是矩形右下的点
去初始化一个矩形
---华软网友回复---
CRect();这个括号里面有好多东西能够放的哦。
---华软网友回复---
构造临时对象
---华软网友回复---
LPCRECT lpRect
Crect自身已经实现了LPCRECT ,所以能够。
---华软网友回复---
CRect(m_ptOrigin,point)这样定义CRect类对象能够吗?
=============
能够,这会产生一个临时的变量。
---华软网友回复---
不知道楼主有没有看孙鑫的视频,视频里面曾经解释过CRect定义了LPRECT类型转换,所以在需要LPRECT参数的地方能够直接用CRect来赋值
---华软网友回复---
临时对象
这个问题似曾相识啊。。。
---华软网友回复---
引用 7 楼 whrspsoft3723 的回复:
LPCRECT lpRect
Crect自身已经实现了LPCRECT ,所以能够。
ddd
---华软网友回复---
学习 学习
---华软网友回复---
引用 9 楼 pun_c 的回复:
不知道楼主有没有看孙鑫的视频,视频里面曾经解释过CRect定义了LPRECT类型转换,所以在需要LPRECT参数的地方能够直接用CRect来赋值


恩仔细的 在看看哈
---华软网友回复---
CRect 有重载的 LPRECT 的转换操作符,楼主能够查看CRect 类的定义。
---华软网友回复---
  class="deleted_message"> 该回复于2010-12-09 09:32:57被版主删除
---华软网友回复---
看MSDN 你就明白了:
C++">
void FillRect(
   LPCRECT lpRect,
   CBrush* pBrush 
);



lpRect
Points to a RECT structure that contains the logical coordinates of the rectangle to be filled. You can also pass a CRect object for this parameter.

pBrush
Identifies the brush used to fill the rectangle.


---华软网友回复---
C++">CRect( ) throw( ); 
CRect( 
   int l, 
   int t, 
   int r, 
   int b  
) throw( );
CRect( 
   const RECT& srcRect  
) throw( );
CRect( 
   LPCRECT lpSrcRect  
) throw( );
CRect( 
   POINT point, 
   SIZE size  
) throw( );
CRect( 
   POINT topLeft, 
   POINT bottomRight  
) throw( );
 
     
华软声明:本内容来自网络,如有侵犯您版权请来信指出,本站立即删除。