SDUST 小学期飞机大战简述 - 2绕不开的MFC类

2020-07-28

高考成绩陆续出炉了,群地位+FFFFFFFFFFFFFFFF。

本章主要整理了一些一定需要使用的MFC类,并提供了微软官方文档的链接供参考。

CDC类

CDC类定义了设备上下文对象,使用户可以方便地在窗口绘制图形图像和格式化打印字符。游戏中利用它在窗口中绘制血条、提示字符以及各种图像和背景等。使用到的CDC类下相关的方法有:

  1. BOOL Ellipse(int x1, int y1, int x2, int y2); 在该CDC对象绘制椭圆
  2. BOOL Rectangle (int x1, int y1, int x2, int y2); 在该CDC对象绘制矩形
  3. BOOL TextOut(int x, int y, LPCTSTR lpszString, int nCount); 在该CDC对象打印字符
  4. BOOL TextOut(int x, int y, const CString& str); 在该CDC对象打印CString类型变量
  5. CPen* SelectObject(CPen* pPen);CBrush* SelectObject(CBrush* pBrush); 等,选择GDI对象。传入新对象的指针,返回旧对象的指针
  6. CGdiObject* SelectStockObject(int nIndex); 选择对应于预定义库存笔、画笔或字体之一的CGdiObject对象,如透明填充效果(NULL_BRUSH)等,同时返回旧的CGdiObject对象指针

两个和 CDC 类相关的类

不解释,自己看。

  1. CPen类
  2. CBrush类

CObList类

CObList类是支持按顺序或按指针值访问的非独特指针的有序列表,可以像双向链一样使用。它可以用来存储游戏中敌机、子弹、导弹、爆炸效果和各种奖励,并使用POSITION型的迭代器来访问和管理,以此实现遍历各个对象的碰撞检测和显示输出。游戏中使用到的CObList方法有:

  1. POSITION AddTail(CObject* newElement); 向链表尾部添加新对象的指针,返回对象在链表中的位置
  2. POSITION GetHeadPosition() const; 获取链表头部对象的位置,返回POSITION型值
  3. CObject*& GetNext(POSITION& rPosition); 获取rPosition 位置的元素,然后将 rPosition刷新为链表中下一个位置;如果已经到达尾部,则把rPosition设为NULL
  4. void RemoveAll(); 删除链表中的所有指针

注意在删除指针的时候,你有义务自己释放指针所指向的对象。

CImageList类

CImageList定义了一个图像列表,它是相同大小图像的集合,利用可以方便地管理位图列表,实现游戏中各种图像的存储、背景的滚动以及爆炸效果的实现。值得注意的是需要先使用LoadImageW获得图像的HANDLE。使用到的该类的方法有:

  1. BOOL Draw(CDC* pDC, int nImage, POINT pt, UINT nStyle); pDC指定绘图的CDC对象;nImage是从0开始的列表下标;pt指定图像左上角在CDC对象上的位置;nStyle指定绘图的形式,如ILD_TRANSPARENT背景透明

CRect类

定义了一个矩形

  1. BOOL IntersectRect(LPCRECT lpRect1, LPCRECT lpRect2) throw(); 如果两个矩形有交集,则返回TRUE,否则返回FALSE
  2. CPoint CenterPoint() const throw(); 返回矩形的中心点坐标

两个可能用到的类

后面的章节会有实例。

  1. CButton类
  2. CDialog类

本章完

by SDUST weilinfox

本文地址 https://www.cnblogs.com/weilinfox/p/13391352.html

前章 https://www.cnblogs.com/weilinfox/p/13390862.html

续章 未编辑

后面的章节大概率鸽了,有需要的可以在仓库主页提issue
https://github.com/weilinfox/SDUST_PlaneGame

posted @ 2020-07-28 15:25  八衛門狸  阅读(72)  评论(0编辑  收藏