VC中类的强制性转化,通过派生来控制自己想要的类

在c++入门的时候,常常看见很多类的强制性转换,比如看看

CFrameWnd *pFrame = (CFrameWnd*)AfxGetMainWnd();

CView *pView = (CView*)pFrame->GetActiveView(); 再通过pView实现其他的操作等,为什么pView可以实现其他的操作呢?因为很多的视图类都从CView中继承或派生来的,我们就可以通过其他类强制转换到CView来实现。

通过这种方法我们可以实现自己的类派生,从而可以很方便的实现类的通讯。我们可以自己定义类如下:

1.定义一个父类:

class CDrawElement :public CObject

2.定义其他类:

 class CArc :public CDrawElement  //弧形

class CEllipse:public CDrawElement //椭圆

class CLine:public CDrawElement //直线

class CRectangle:public CDrawElement//矩形

class CText :public CDrawElement//文字

这些类都来自CDrawElement的派生

3.操作方法

   我们打算在程序中按照不同顺序绘制各种上面的图形,但是为了对各种图行的控制,对各种图形记录是有必要的,因此我们还需要自己定义一个链表 CPtrList m_ObjectList;  // 绘制图像的链表

   看看我们是怎样把图形加入到链表中的

CLine* pLine=new CLine;
 m_ObjectList.AddTail(pLine); //加入直线

CEllipse* pEllipse=new CEllipse;
 m_ObjectList.AddTail(pEllipse); //加入椭圆

CRectangle* pRectangle=new CRectangle;
 m_ObjectList.AddTail(pRectangle);//加入矩形

CArc* pArc=new CArc;
 m_ObjectList.AddTail(pArc);//加入圆弧

CText* pText=new CText;
 m_ObjectList.AddTail(pText); //加入文字

对这些不同的图形,我们怎么去知道他们那种呢?呵呵,现在我们就可以通过强制转换来知道了!

POSITION pos = m_ObjectList.GetHeadPosition();
 CDrawElement* pHitItem;
 while(pos != NULL)
 {
     pHitItem=(CDrawElement*)m_ObjectList.GetNext(pos); //通过这里我们就可以控制我们的图形了

}

以前也这样用过!却没有发现这样做的好处,只知道这样做!不过今天发现了,虽然比较拙劣,但是也共享出来,至少是一种很好的方法

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值