我的项目中需要一个可以编辑的ListCtrlEdit,在网上找了一个.有点麻烦的是这个代码把可以编辑的ListCtrlEdit同FromView结合起来实现的.所以我没办法单独使用其中的ListCtrlEdit,只好连带其中的CSuperGrid1View一起用,但我不想再来一个MainFrame,想把它放进一个属性页IDD_PROPSCI4中.网上是创建到对话框的,我想应该也可以创建到属性页吧,但运行时会出错跳到下面位置,然后没有任何效果.
行时会出错跳到下面位置,然后没有任何效果.#ifdef _DEBUG
// dialog template must exist and be invisible with WS_CHILD set
if (!_AfxCheckDialogTemplate(m_lpszTemplateName, TRUE))
{
ASSERT(FALSE);          // **** 出错跳到 可以继续执行,但没有任何效果
PostNcDestroy();        //invalid dialog template name cleanup if Create fails too soon
return FALSE;
}
#endif //_DEBUGCPropKnow4::PhrazeCSuperGrid1View(){ CCreateContext m_pContext;
m_pContext.m_pCurrentDoc = NULL;//不要文档为空
m_pContext.m_pCurrentFrame = (CFrameWnd *)this;//设置父窗体指针,将对话框指针强制转换
m_pContext.m_pLastView = NULL;//前一个视图为空
m_pContext.m_pNewDocTemplate = NULL;//文档模板为空
m_pContext.m_pNewViewClass = RUNTIME_CLASS(CSuperGrid1View); pSuperGrid = (CSuperGrid1View*)m_pContext.m_pNewViewClass->CreateObject();//通过指针创建视图对象 if (pSuperGrid==NULL) {
TRACE1("Warning: Dynamic create of view type %hs failed.\n",
m_pContext.m_pNewViewClass->m_lpszClassName);
}
ASSERT_KINDOF(CWnd,pSuperGrid);
CFormView *m_pView=pSuperGrid; CRect RectTargetCtrl(0,50,700,400);  if (!pSuperGrid->Create(NULL,NULL,AFX_WS_DEFAULT_VIEW,RectTargetCtrl,this,AFX_IDW_PANE_FIRST,&m_pContext)) 
         
{
TRACE0("Warning: Couldn't create view for frame.\n");
return FALSE;
} return TRUE;  // 
}编译时说FormView::Create是保护类函数,不可使用,照网上的说法,重载了Createclass CSuperGrid1View : public CFormView
{      virtual BOOL Create(LPCTSTR, LPCTSTR, DWORD,const RECT&, CWnd*, UINT, CCreateContext*);}BOOL CSuperGrid1View::Create(LPCTSTR cs1, LPCTSTR cs2, DWORD cs3,const RECT& cs4, CWnd* cs5, UINT cs6, CCreateContext* cs7)
{
return CFormView::Create(cs1, cs2, cs3,cs4,cs5,cs6,cs7);
}
照网上的方法,为了验证视图效果,在视图类的OnDraw函数添加如下代码,但没有任何效果,不执行到这里:void CSuperGrid1View::OnDraw(CDC* pDC)
{
    CDocument* pDoc = GetDocument();
    // TODO: 在此添加绘制代码
    CRect rt(0,50,200,200);
    pDC->DrawText(_T("这是在属性页上创建的视图"),&rt,DT_LEFT);}