| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 857 人关注过本帖
标题:请教VC++6.0编程中文档视图编程问题(CObArray类的使用)
只看楼主 加入收藏
松痕
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2009-11-23
结帖率:0
收藏
 问题点数:0 回复次数:0 
请教VC++6.0编程中文档视图编程问题(CObArray类的使用)
问题:
自定义了一个基类CBase
class CBase : public CObject  
{
public:
    int m_nType;
    CString m_strName;
    int m_nCode;
    CRect m_textRect;
    CPoint center;
public:
    CBase();
    virtual ~CBase();
    virtual void Draw(CDC *pDC);

};
定义了三个派生类
class A1:public CBase
{
public:
       变量1;
        变量2;
        ...
   
        变量n;
        变量n+1
        ...
public:
        void Draw(CDC *pDC);//用来绘制图形
}
派生类A2,A3和A1类似,在文档类种添加一个函数Draw(CDC *pDC)
Doc.h中定义了CObArray指针对象*myobarray
CObArray myobarray;
Doc.cpp的Draw(CDC *pDC)函数中进行数据的传入
Draw(CDC *pDC)
{
myobarray=new CObArray();
A1 *a1,*a2....
a1=new A1();
a1->变量1;
a1->变量2;
...//变量n,n+1...没有赋值,他们的值在视图中变化
myobarray->ADD(a1);
a2->变量1;
a2->变量2;
...
...//变量n,n+1...没有赋值,他们的值在视图中变化

myobarray->ADD(a);
//类A2,A3的对象的赋值和往对象数组myobarray中存入与前相同

然后绘制图形
int nCount=myobarray->GetSize();
    for(int i=0;i<nCount;i++)
    {        
        ((CBase*)(myobarray->GetAt(i)))->Draw(pDC);

    }



}
文档类数据输入完后,在视图类的OnDraw()函数中调用文档类函数Draw()
即:pDoc->Draw(pDC);
此时,运行,图形可以显示。问题是:1、在视图类中是否可以访问myobarray的类对象A1 *a1,*a2...A2 *a1,*a2...中变量n,变量n+1,若能访问,如何去访问?访问是否是这样子的?
    int nCount=pDoc->myobarray->GetSize();
for(int i=0;i<nCount;i++)
{
((A1*)(pDoc->myobarray->GetAt(i)))->变量n;//这个地方是否可以直接给变量n赋值,此赋值的结果会不会改变相应的类对象的变量值,
                                            此值在A1类的Draw()函数中用到,根据变量的值来改变图形显示
}
2、比如说在视图类中添加鼠标左键按下函数,在此函数中当左键在一定的区域(比方一个正方形范围内)按下以后,需要改变A1类中的一个变量值,而且只改变按下范围所对应的A1类对象的变量值,其他A1类对象相应的变量值不改。也就是说,一个A1类对象和一个鼠标左键按下对应,鼠标按下的位置,只有相应的A1类的对象的变量值做变化,此变量值变化以后图形也要做相应的变化,如何去实现实时更新的这种变化?
搜索更多相关主题的帖子: 中文 CObArray 视图 
2009-11-23 21:38
快速回复:请教VC++6.0编程中文档视图编程问题(CObArray类的使用)
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.038677 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved