求助 - MFC多文档单一视图的问题 - 急
建一个程序,多文档,用来绘制数据曲线,我希望支持不同内容的文档,但由于绘图部分实际是一样的,即从不同格式的文档里读取数据,再显示出来。所以是多文档的,但视图是1个公用的,
从CFORMVIEW里派生出来了一个类CNLFormBase,在这个CNLFormBase里创建了绘制曲线的区域以及坐标。原本在XXAPP的InitInstance()函数里添加文档模版,使不同的的doc对应1个CNLFormBase,但是有问题,不能区分CNLFormBase里的GetDocument返回的是那个doc,所以感觉这样作不对
请问MFC里的文档/视图结构支持这样的么 - 多文档对应1个视图?
(因为很多绘图,调整的功能都集中在这个CNLFormBase里,如果将这些都为每个DOC重写1遍太不可思议)
然后想到从CNLFormBase派生出不同的类CMySubForm1,2,3,....,但不增加任何内容,然后在创建文档模版时用派生出来的CMySubForm1,2,3...来对应DOC1,2,3...,编译可以通过,但一运行到pFram->UpdateWindow();就报错了。
请问是不是我的方式有问题?
代码大致如下,请高手帮我检查下
class CNLGraphBase : public CFormView
{
DECLARE_DYNCREATE(CNLGraphBase)
protected: // create from serialization only
CNLGraphBase();
public:
enum{ IDD = IDD_NLGRAPH_FORM };
// Protected method
// Overrides
public:
virtual BOOL PreCreateWindow(CREATESTRUCT& cs);
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
virtual void OnInitialUpdate(); // called first time after construct
// Implementation
public:
virtual ~CNLGraphBase();
#ifdef _DEBUG
// virtual void AssertValid() const;
// virtual void Dump(CDumpContext& dc) const;
#endif
// Generated message map functions
protected:
afx_msg void OnContextMenu(CWnd* pWnd, CPoint point);
DECLARE_MESSAGE_MAP()
};
class CMySubForm1 :
public CNLGraphBase
{
public:
CMySubForm1(void);
virtual ~CMySubForm1(void);
DECLARE_DYNCREATE(CMySubForm1)
};
class CMySubForm2 :
public CNLGraphBase
{
public:
CMySubForm2(void);
virtual ~CMySubForm2(void);
DECLARE_DYNCREATE(CMySubForm2)
};
然后在xxApp的InitInstance()种添加
pDocTemplate = new CMultiDocTemplate(IDR_FORM1,
RUNTIME_CLASS(CNLDoc1),
RUNTIME_CLASS(CChildFrame),
RUNTIME_CLASS(CMySubForm1));
if (!pDocTemplate)
return FALSE;
AddDocTemplate(pDocTemplate);
pDocTemplate = new CMultiDocTemplate(IDR_FORM2,
RUNTIME_CLASS(CNLDoc2),
RUNTIME_CLASS(CChildFrame),
RUNTIME_CLASS(CMySubForm2));
if (!pDocTemplate)
return FALSE;
AddDocTemplate(pDocTemplate);