Document设计时的小问题

tjcougar 2002-05-04 03:36:08
我的一个程序本来只要画直线,圆和矩形,他们只要两个点就可以确定,所以设计记录所画图形的数据结构设计如下:
class CDataPack:public CObject
{
DECLARE_DYNAMIC(CDataPack)
public:
CDataPack(int Operation,int FromPointX,int FromPointY,int ToPointX,int ToPointY);
CDataPack();
public:
int m_Operation;
int m_FromPointX;
int m_FromPointY;
int m_ToPointX;
int m_ToPointY;

};


但现在又要画贝塞尔曲线,需要4个点来记录所画曲线。该怎么改动数据结构呢?
我记得有一个办法可以动态确定成员变量的个数。
...全文
36 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
xjl930 2002-05-04
  • 打赏
  • 举报
回复
关键重载该类的构造函数。然后就可以采用webber84(糕鱼昏) 的办法了。
webber84 2002-05-04
  • 打赏
  • 举报
回复
这接用CObject*指针不行,但可以设置一个虚函数来返回些数据成员。
tjcougar 2002-05-04
  • 打赏
  • 举报
回复
我所有的类从CObject继承可以吗?
class CDataPack:public CObject
class CBeizer:public CObject
然后把CTypedPtrList<CObList,CDataPack*> m_AllDataList;
改成CTypedPtrList<CObList,CObject*> m_AllDataList;
这样遍历m_AllDataList时能访问CDataPack和CBeizer里的不同数据成员吗?
webber84 2002-05-04
  • 打赏
  • 举报
回复
你把这些类所有共同的方法,比如设置线宽,绘制等等作为纯虚函数放到一起组成一个抽象基类。所有的直线类,圆类等都从这个基类继承。这样既能在继承类中增加属性,也可以把基类的指针放到TypedPtrList中,通过调用虚函数来实现直线等的重画。
tjcougar 2002-05-04
  • 打赏
  • 举报
回复
因为我最后要把他们都add到一个TypedPtrList里面以便收到wm_paint时全部重画
m_AllDataList.AddTail(new CDataPack(

m_SendData.m_Operation,
m_SendData.m_FromPointX,
m_SendData.m_FromPointY,
m_SendData.m_ToPointX,
m_SendData.m_ToPointY
));
akademecia 2002-05-04
  • 打赏
  • 举报
回复
up
webber84 2002-05-04
  • 打赏
  • 举报
回复
既然它们有不同的属性,你为什么不为它们分别设计一个类呢?

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧