我想实现这样的功能:
文档包含一个过程列表,视图只显示其中一个过程,具体如下:1、首先自定义两种数据结构:CProcess(过程)和CPakage(包),其中CProcess只包含一个名称属性,而CPakage包含一个名称属性和一个CProcess对象列表,如下:#include <afxtempl.h>//过程
class CProcess : public CObject  
{
//操作
public:
...
//数据
public:
CString m_strProcessName;
};//定义一个CProcess列表
typedef CTypedPtrList<CObList,CProcess*> CProcessList;//包
class CPakage : public CObject  
{
//操作
public:
...
//数据
public:
CString m_strPakageName;
CProcessList m_listProcess;
};2、在文档中就包含一个CPakage对象(一个文件就是一个CPakage对象)和一个用于在视图中显示的CProcess对象,如下:class CTestDoc : public CDocument
{
// 其他操作
public:
          ...
//数据
public:
CPakage m_Pakage;//包
CProcess* m_pCurProcess;//当前过程--用于在视图中显示};3、包(m_Pakage)和当前过程(m_pCurProcess)的初始化如下:
CTestDoc::CTestDoc()
{
         //包中加入10个过程;
for(int i=1;i<=10;i++)
{
CProcess* pTempProcess=new CProcess;
CString strProcessName="";
strProcessName.Format("Process%d",i);
pTempProcess->m_strProcessName=strProcessName;
m_Pakage.m_listProcess.AddTail(pTempProcess);
} //初始化当前过程为包中的第一个过程
m_pCurProcess=m_Pakage.m_listProcess.GetHead();}4、视图的OnDraw函数只显示当前过程的过程名称,如下:
void CTest::OnDraw(CDC* pDC)
{
CTestDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);

pDC->TextOut(10,10,
pDoc->m_pCurProcess->m_strProcessName);
}5、下面我想实现的是,当我双击视图窗口的时候,新建一个窗口,显示最后一个过程的名称,而不更新原来的视图:
void CTestView::OnLButtonDblClk(UINT nFlags, CPoint point) 
{
CTestDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);

pDoc->m_pCurProcess=pDoc->m_Pakage.m_listProcess.GetTail();         //要求:theApp要用extern声明,CTestApp的初始化函数中的pDocTemplate变量要作为CTestApp的public型成员变量,而不是作为一个临时变量。 //1-创建新的框架窗口(还有它的子窗口)
CFrameWnd* pFrame=theApp.pDocTemplate->CreateNewFrame(
pDoc,NULL); //2-告诉框架自我更新(还有它的子窗口)
theApp.pDocTemplate->InitialUpdateFrame(pFrame,pDoc); //????如何做才能不更新原来的视图呢???
CView::OnLButtonDblClk(nFlags, point);
}6、运行结果是:原来的视图窗口也更新了,我知道这是一定会发生的,但是我想实现的就是让原来的视图不更新,并进一步扩展为可以任意选择某个过程为其新建一个窗口显示。请问如何实现?