?? obj.h
字號(hào):
#pragma once
#include <windows.h>
#include <commctrl.h>
class Obj
{
protected:
HIMAGELIST ImgList;//ImageList控件,用來(lái)讀取bmp圖像,自動(dòng)生成mask和透明的渲染。
static HDC memdc;//所有對(duì)象共享的memdc,只初始化一次,提高渲染時(shí)的速度。但是多線程步安全。
int XPos,YPos;//渲染時(shí),Obj的中心坐標(biāo)
int FramesCount;//ImageList控件中圖片的數(shù)目。
int CurrentFrame;//當(dāng)前的圖片
int XV,YV;//X,Y軸的速度
int ImgWidth,ImgHeight;//ImageList控件中每一張圖片的大小
RECT Bound;//Obj活動(dòng)的邊界
BOOL Hide;//Obj是否可見(jiàn)
public:
Obj(void);//構(gòu)造函數(shù),初始化通用控件
~Obj(void);//析構(gòu)函數(shù)
void Create(LPCTSTR lpbmp,int cx,int cGrow,COLORREF mask);//初始化Obj對(duì)象
virtual void Render(HDC destDC);//當(dāng)圖片可見(jiàn),則渲染
void NextFrame();//下一張圖片,可以用來(lái)形成循環(huán)的動(dòng)畫(huà)。
void SetPosition(int x,int y);//設(shè)置位置
void SetFrame(int Frame);//設(shè)置當(dāng)前圖片
virtual void NextState();//下個(gè)狀態(tài),一般在timer消息中調(diào)用,通過(guò)XV,YV計(jì)算新的位置
void SetXV(int xv);//設(shè)置X軸的速度
void SetYV(int yv);//設(shè)置Y軸的速度
virtual void SetBound(RECT rect);//設(shè)置邊界
void SetHide(BOOL hide);//設(shè)置是否可見(jiàn)
int GetXPos() {return XPos;}
int GetYPos() {return YPos;}
int GetHeight() {return ImgHeight;}
BOOL IsHitObj(Obj &obj) //測(cè)試是否與其它Obj相交
{
return abs(this->XPos-obj.GetXPos()) < ((this->ImgWidth+obj.GetWidth())/2) &&
abs(this->YPos-obj.GetYPos()) < ((this->ImgHeight+obj.GetHeight())/2);
}
BOOL IsInBound() //是否在邊界內(nèi)
{
return ( XPos>(Bound.left+ImgWidth/2) && XPos<(Bound.right-ImgWidth/2) &&
YPos>(Bound.top+ImgHeight/2) && YPos<(Bound.bottom-ImgHeight/2)
);
}
BOOL IsOutBound()//是否在邊界外。如果既不在邊界內(nèi),也不在邊界外,則在邊界上。
{
return ( XPos<(Bound.left-ImgWidth/2) || XPos>(Bound.right+ImgWidth/2) ||
YPos<(Bound.top-ImgWidth/2) || YPos>(Bound.bottom+ImgHeight/2)
);
}
BOOL IsHide()//是否可見(jiàn)
{
return Hide;
}
};
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -