CPoint类
类CPoint是对Windows结构POINT的封装,凡是能用POINT结构的地方都可以用CPoint代替。
结构POINT表示屏幕上的一个二维点,其定义为:
typedef struct tagPOINT{
LONG x;
LONG y;
} POINT;
                  其中 x、y分别是点的横坐标和纵坐标。
                     由于CPoint提供了一些重载运算符,使得CPoint的操作更加方便。如运算符“+”,“-”,“+=”和“-=”用于两个CPoint对象或一个CPoint对象与一个CSize对象的加减运算,运算符“==”和“!=”用于比较两个CPoint对象是否相等。 
CSize类

类CSize是对Windows结构SIZE的封装,凡是能用SIZE结构的地方都可以用CSize代替。
结构SIZE表示一个矩形的长度和宽度,其定义为:
typedef struct tagSIZE{
LONG cx;
LONG cy;
} SIZE;
其中 cx、cy分别是长度和宽度。
与CPoint类似,CSize也提供了一些重载运算符。如运算符“+”,“-”,“+=”和“-=”,用于两个CSize对象或一个CSize对象与一个CPoint对象的加减运算,运算符“==”和“!=”用于比较两个CSize对象是否相等。
由于CPoint和CSize都包含两个整数类型的成员变量,他们可以进行相互操作。CPoint对象的操作可以以CSize对象为参数。同样,CSize对象的操作也可以以CPoint对象为参数。如可以用一个CPoint对象构造一个CSize对象,也可以用一个CSize对象构造一个CPoint对象,允许一个CPoint对象和一个CSize对象进行加减运算。
CRect类
类CRect是对Windows结构RECT的封装,凡是能用RECT结构的地方都可以用CRect代替。
结构RECT表示一个矩形的位置和尺寸,其定义为:
typedef struct tagRECT{
LONG left;
LONG top;
LONG right;
LONG bottom;
} RECT;
其中 left、top分别表示矩形左上角顶点的横坐标和纵坐标,right、bottom分别表示矩形右下角顶点的横坐标和纵坐标。
由于CRect提供了一些成员函数和重载运算符,使得CRect的操作更加方便。
1.CRect的构造函数
CRect有如下6个构造函数:
CRect( );
CRect( int l, int t, int r, int b );
CRect( const RECT& srcRect );
CRect( LPCRECT lpSrcRect );
CRect( POINT point, SIZE size );
CRect( POINT topLeft, POINT bottomRight );
说明:分别以不同的方式构造CRect对象,参数l,t,r,b分别指定矩形的左边、上边、右边和底边。SrcRect是一个RECT结构的引用。LpSrcRect是一个指向RECT结构的指针。Point指定矩形的左上角顶点的坐标,size指定矩形的长度和宽度。topLeft指定矩形的左上角顶点的坐标,bottomRight指定矩形的右下角顶点的坐标。
2.CRect重载运算符
CRect重载的运算符包括:赋值运算符、比较运算符、算术运算符、交并运算符等。
赋值运算符“=”实现CRect对象间的拷贝。
比较运算符“==”和“!=”比较两个CRect对象是否相等(四个成员都相等时,两个对象才相等)。
算术运算符包括“+=”、“-=”、“+”、“-”,他们的第一个操作数是CRect对象,第二个操作数可以是POINT、SIZE或RECT。当第二个操作数是POINT或SIZE时,“+”和“+=”的运算结果使CRect矩形向x轴和y轴的正方向移动POINT或SIZE指定的大小。“-”和“-=”的运算结果则使CRect矩形向x轴和y轴的负方向移动POINT或SIZE指定的大小。当第二个操作数是RECT时,“+”和“+=”的运算结果使CRect矩形的左上角顶点向左上方向移动RECT前两个成员指定的大小,而CRect矩形的右下角顶点向右下方向移动RECT后两个成员指定的大小。“-”和“-=”的运算结果则使CRect矩形的左上角顶点向右下方向移动RECT前两个成员指定的大小,而CRect矩形的右下角顶点向左上方向移动RECT后两个成员指定的大小。
运算符“&”和“&=”得到两个矩形的交集(两个矩形的公共部分),运算符“|”和“|=”得到两个矩形并集(包含两个矩形的最小矩形)。
3.CRect其他常用成员函数
(1)Width( ) :得到矩形的宽度;
(2)Height( ):得到矩形的高度;
(3)Size( ):得到矩形的大小(高度和宽度);
(4)TopLeft( ):得到矩形左上角顶点坐标;
(5)BottomRight( ) :得到矩形右下角顶点坐标;
(6)PtInRect( ):判断一个点是否在矩形内,如是返回真,否则返回假。原形如下:
BOOL PtInRect( POINT point ) const;
(7)IsRectEmpty( ):判断矩形是否为空(高度和宽度都是0);
(8)IsRectNull( ):判断矩形是否为0(左上角和右下角坐标都是0);
(9)SetRect( ):设置矩形四个成员变量的值。
4.CRect的规格化
一个规格化的矩形是指他的高度和宽度都是正值,即矩形的右边大于矩形的左边,矩形的底边大于矩形的上边。矩形的规格化函数是NormalizeRect(),该函数比较矩形的的left和right及top和bottom,如果不满足规格化要求,则对换两个值。上面介绍的大部分运算符和成员函数,只有规格化的矩形才能得到正确结果.

文章引用自:http://hi.baidu.com/kofeffect/blog/item/a0408b380e06f5f6b211c702.html

VC学习:CPoint,CSize,CRect类说明相关推荐

  1. [转]CPoint+CSize+CRect学习大纲

    CPoint+CSize+CRect学习大纲. 熟知CPoint.CSize.CRect类的基类 class CPoint : public tagPOINT class CSize : public ...

  2. VC++----CRect类

    这个类是从tagRECT结构派生而来的.(tagRECT是RECT结构的不太常用的别名.)这意味着RECT结构的数据成员(left,top,right,和bottom)也是CRect的可访问数据成员. ...

  3. VC中的CRect类

    CRect类基本介绍 //本文来自http://baike.baidu.com/view/2406388.htm CRect类是MFC的常用类,十分基础,故整理出来以供新手参考. 我用金山快译查了一下 ...

  4. VC++ CRect类说明

    这个类是从tagRECT结构派生而来的.(tagRECT是RECT结构的不太常用的别名.)这意味着RECT结构的数据成员(left,top,right,和bottom)也是CRect的可访问数据成员. ...

  5. VC++入门经典学习笔记--结构和类

    1.自定义数据类型 C++中的结构:结构是使用关键字struct定义的用户定义类型.结构起源于C语言,C++继承并扩展了结构.C++中的结构在功能上可以由类代替,因为任何使用结构能够做到的事情都可以使 ...

  6. VC++中使用使用winnet类获取网页内容

    2005-09-01 VC++中使用使用winnet类获取网页内容 - [VC专栏] 微软提供的Winnet类是一个应用层的网络通信组件, 它可以使你的应用程序很容易的实现http.ftp.gophe ...

  7. VC学习笔记:文本图形

    VC学习笔记:文本图形  SkySeraph OCT.30th 2010  HQU Email-zgzhaobo@gmail.com  QQ-452728574 Latest Modified Dat ...

  8. VC学习笔记:简单绘图

    VC学习笔记:简单绘图 SkySeraph Oct.29th 2009  HQU Email-zgzhaobo@gmail.com  QQ-452728574 Latest Modified Date ...

  9. VC学习笔记 -单选按钮控件(Ridio Button)的使用

    在VC++编程过程中,查资料是一个苦差事,案边放了一摞书左翻右翻好是烦人.一赌气就把一些常用的小技巧自己总结了一下,虽费了些功夫,但对以后编程很有好处.现拿出来与大家共享,以后积累多了,作一个CHM电 ...

最新文章

  1. linux mysql 统一字符编码
  2. 阿里安全图灵实验室再次刷新世界顶级算法比赛成绩
  3. ASP.NET获取任意网页HTML代码
  4. 探索感染了COVID-19的动物的数据
  5. css怎样使弹跳的小球旋转,如何使用纯CSS实现小球跳跃台阶的动画效果(附源码)...
  6. Web自动化测试中使用groovy实现页面的对象化
  7. 如何 shuffle 一个 vector 以及 vectorvector
  8. 【Python实例第31讲】递归的特征消除法
  9. springweb 初步理解
  10. java手机视频下载_使用JAVA合并哔哩哔哩手机客户端下载的视频
  11. 计算机上显示找不到无线网络连接,笔记本没有无线网络连接怎么办 解决方法介绍【图解】...
  12. XP系统清理优化工具箱
  13. python 特征选择卡方_文本特征选择(信息熵、Gini、IV、卡方值)
  14. 移动App性能测试包含哪些内容?App性能测试工具有哪些?
  15. 数字黑洞水仙花数6174卡普耶卡变换,卡布列卡常数归敛
  16. P R MAP简单理解,yolo中
  17. 大龄程序员的前途在哪里?
  18. 【错误记录】手机应用无法联网 ( 添加 READ_PRIVILEGED_PHONE_STATE 权限导致手机应用网络不可用 )
  19. 盈亏计算html,外汇交易中如何计算盈亏? -
  20. Office宏——打印PPT

热门文章

  1. 全国113个城市空气质量的K均值聚类分析--基于R
  2. 鸿蒙os开发者创新大赛,【高校|加速孵化鸿蒙生态,华为首届HarmonyOS开发者创新大赛揭榜】...
  3. 计算机考试是抽题库中的原题吗?
  4. 3D建模师年收入增长多少倍?游戏与动漫企业高估值的秘密
  5. 优思学院|六西格玛常见问题有哪些?
  6. Python 使用xlrd读Excel文件报错
  7. 【Arcgis】基于泰森多边形求流域面降水量
  8. 慕课网 (IT技能学习平台)
  9. 【狂云歌之unity_vr】VR开发中的优化
  10. arduino连接ESP8266-01发微信消息,消息提醒等