想实现的目标:Doc类的OnOpenDocument读取一个文件,文件由许多组数据组成,每组数据的结构:
struct DayData
{
DWORD m_lDate;
LONG m_lOpenPrice;
LONG m_lMaxPrice;
LONG m_lMinPrice;
LONG m_lClosePrice;
LONG m_lMoney;
DWORD m_lTotal;
LONG m_lNoUse1;
LONG m_lNoUse2;
LONG m_lNoUse3;
};
按组读取到的数据,存在Doc类的成员变量 CArray<DayData,DayData> m_dayArray;中
请问存好的这些CArray数据,该怎样被View类使用呢?
void CT1View::OnDraw(CDC* pDC)
{
CT1Doc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
// TODO: add draw code for native data here
CArray<DayData,DayData>& m_dayArray = pDoc->m_dayArray;
我写的错在哪里了呢?麻烦前辈们指正,十分感谢
------解决思路----------------------
你把编译错误信息贴出来吧
------解决思路----------------------
一般,不建议lz这样使用DOC类的数据,会给自己很麻烦
View类在文档模板结构里,无非就是用于显示数据,在程序的任何位置要显示数据,一般只需要hDC参数,最多需要hWnd(其他一般都可以通过hWnd获得);
而数据本身是集中在DOC类,因此,最直接的办法是在doc类写显示函数
Doc::Draw(CDC*pDC)
{
................
}
在View的OnDraw中
{
xxxDoc*pDoc=GetDocument();
pDoc->Draw(pDc);
}
LZ感觉一下,这样写程序是否直截了当的多?
------解决思路----------------------
CArray没有你定义的模版类型的拷贝构造函数,你可以换成在CDocument里定义指针,CArray<xx,xx>* m_pArray;
楼上说的是常用做法,Draw函数通常封装在CDocument里,View里直接去调,这样才体现了MVC思想
------解决思路----------------------
CArray<DayData*,DayData*>
用指针