win32(5)

基于状态机模型的功能类机制(——宫法明 )

 

1.纯虚函数:定义一个父类:CProduction                         ------------------产品类

class CProduction 
{
public:
 CProduction();
 virtual ~CProduction();
 //数据
public:
 COLORREF color;//颜色
 int size;//线条粗细
 //操作
public:
 virtual void draw(CDC *pDC)=0;//纯虚函数

};

2.新建通用类,实现显示状态栏消息
void CGlobleAgent::showMsgOnStatusBar(CString msg)
{
 CMainFrame *pFrame=(CMainFrame*)AfxGetMainWnd();
 CStatusBar *pSb=pFrame->m_wndStatusBar;
 pSb->SetPaneText(0,msg);
}

3.新建类CProLine和CProPoint ,继承CProduction,重载draw(CDC *pDC);

void CProLine::draw(CDC *pDC)
{
 //AfxMessageBox("i am a point!");
 CGlobleAgent::showMsgOnStatusBar("i am a line");
}

void CProPoint::draw(CDC *pDC)
{
 //AfxMessageBox("i am a point!");
 CGlobleAgent::showMsgOnStatusBar("i am a point!");
}

4.纯虚函数:定义一个父类:CWorke                       ------------------工人类

//响应鼠标消息函数

class CWorker 
{
public:
 CWorker();
 virtual ~CWorker();
public:
 virtual void OnLButtonDown(UINT nFlags, CPoint point)=0;
 virtual void OnLButtonUp(UINT nFlags, CPoint point)=0;
 virtual void OnMouseMove(UINT nFlags, CPoint point)=0;
};

5.派生两个工人类:

class CWorkerPoint : public CWorker 
{
public:
 CWorkerPoint();
 virtual ~CWorkerPoint();
public:
 void OnLButtonDown(UINT nFlags, CPoint point);
 void OnLButtonUp(UINT nFlags, CPoint point);
 void OnMouseMove(UINT nFlags, CPoint point);
};

class CWorkerLine : public CWorker 
{
public:
 CWorkerLine();
 virtual ~CWorkerLine();
public:
 void OnLButtonDown(UINT nFlags, CPoint point);
 void OnLButtonUp(UINT nFlags, CPoint point);
 void OnMouseMove(UINT nFlags, CPoint point);
};

6.doc类中存放数据:并初始化

 public CDocument

// Attributes
public:
 CProduction *prodution[1000];

 CWorker *working;//正在工作中的工人

添加函数:

void CTest422Doc::setworker(CWorker *worker)
{
 if(worker!=NULL)
 {
  delete working;
 }
 working=worker;
}

7.在工具栏中添加两个画点和画线的按钮

...

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值