⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 obj.h

📁 一个用来交作业用的
💻 H
字号:
#pragma once
#include <windows.h>
#include <commctrl.h>
class Obj
{
protected:
	HIMAGELIST ImgList;//ImageList控件,用来读取bmp图像,自动生成mask和透明的渲染。
	static HDC memdc;//所有对象共享的memdc,只初始化一次,提高渲染时的速度。但是多线程步安全。
	int XPos,YPos;//渲染时,Obj的中心坐标
    int FramesCount;//ImageList控件中图片的数目。
	int CurrentFrame;//当前的图片
	int XV,YV;//X,Y轴的速度
	int ImgWidth,ImgHeight;//ImageList控件中每一张图片的大小
	RECT Bound;//Obj活动的边界
	BOOL Hide;//Obj是否可见
public:
	Obj(void);//构造函数,初始化通用控件
	~Obj(void);//析构函数
	void Create(LPCTSTR lpbmp,int cx,int cGrow,COLORREF mask);//初始化Obj对象
	virtual void Render(HDC destDC);//当图片可见,则渲染
	void NextFrame();//下一张图片,可以用来形成循环的动画。
	void SetPosition(int x,int y);//设置位置
	void SetFrame(int Frame);//设置当前图片
	virtual void NextState();//下个状态,一般在timer消息中调用,通过XV,YV计算新的位置
	void SetXV(int xv);//设置X轴的速度
	void SetYV(int yv);//设置Y轴的速度
	virtual void SetBound(RECT rect);//设置边界
	void SetHide(BOOL hide);//设置是否可见
	int GetXPos() {return XPos;}
	int GetYPos() {return YPos;}
	int GetWidth() {return ImgWidth;}
	int GetHeight() {return ImgHeight;}
	BOOL IsHitObj(Obj &obj) //测试是否与其它Obj相交
	{
		return abs(this->XPos-obj.GetXPos()) < ((this->ImgWidth+obj.GetWidth())/2) &&
			abs(this->YPos-obj.GetYPos()) < ((this->ImgHeight+obj.GetHeight())/2);
	}
	BOOL IsInBound() //是否在边界内
	{
		return ( XPos>(Bound.left+ImgWidth/2) && XPos<(Bound.right-ImgWidth/2) &&
				 YPos>(Bound.top+ImgHeight/2) && YPos<(Bound.bottom-ImgHeight/2)
			   );
	}
	BOOL IsOutBound()//是否在边界外。如果既不在边界内,也不在边界外,则在边界上。
	{
		return ( XPos<(Bound.left-ImgWidth/2) || XPos>(Bound.right+ImgWidth/2) ||
			     YPos<(Bound.top-ImgWidth/2)  || YPos>(Bound.bottom+ImgHeight/2)
				 );
	}
	BOOL IsHide()//是否可见
	{
		return Hide;
	}
};

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -