cview类 public_MFC视图分割,声明CView类的对象,调试时报不能实例化抽象类的异常,还有报错“CLeftPaneView”:“:”的左边必须是类/结构/联合...

MFC视图分割,声明CView类的对象,调试时报不能实例化抽象类的错误,还有报错“CLeftPaneView”:“::”的左边必须是类/结构/联合

本帖最后由 VisualEleven 于 2014-04-28 12:08:04 编辑

仿照网上的一段代码,想分割视图,代码如下:

// MainFrm.h : CMainFrame 类的接口

#pragma once

class CMainFrame : public CFrameWnd

{

protected: // 仅从序列化创建

CMainFrame();

DECLARE_DYNCREATE(CMainFrame)

// 属性

public:

// 操作

public:

// 重写

public:

virtual BOOL PreCreateWindow(CREATESTRUCT& cs);

virtual BOOL OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext);

// 实现

public:

virtual ~CMainFrame();

#ifdef _DEBUG

virtual void AssertValid() const;

virtual void Dump(CDumpContext& dc) const;

#endif

protected:  // 控件条嵌入成员

CStatusBar  m_wndStatusBar;

CToolBar    m_wndToolBar;

// 生成的消息映射函数

protected:

afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);

DECLARE_MESSAGE_MAP()

};

// MainFrm.cpp : CMainFrame 类的实现

#include "stdafx.h"

#include "DigitalImageProcessingVersion01.h"

#include "MainFrm.h"

#include "afxsplitterwndex.h"

#include "afxext.h"

#include "afx.h"

#include "afxwin.h"

CSplitterWndEx m_wndSplitter;//

CView CLeftPaneView;

CView CMainInterface;

#ifdef _DEBUG

#define new DEBUG_NEW

#endif

// CMainFrame

IMPLEMENT_DYNCREATE(CMainFrame, CFrameWnd)

BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd)

ON_WM_CREATE()

END_MESSAGE_MAP()

static UINT indicators[] =

{

ID_SEPARATOR,           // 状态行指示器

ID_INDICATOR_CAPS,

ID_INDICATOR_NUM,

ID_INDICATOR_SCRL,

};

// CMainFrame 构造/析构

CMainFrame::CMainFrame()

{

// TODO: 在此添加成员初始化代码

}

CMainFrame::~CMainFrame()

{

}

int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)

{

if (CFrameWnd::OnCreate(lpCreateStruct) == -1)

return -1;

if (!m_wndToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP

| CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) ||

!m_wndToolBar.LoadToolBar(IDR_MAINFRAME))

{

TRACE0("未能创建工具栏\n");

return -1;      // 未能创建

}

if (!m_wndStatusBar.Create(this) ||

!m_wndStatusBar.SetIndicators(indicators,

sizeof(indicators)/sizeof(UINT)))

{

TRACE0("未能创建状态栏\n");

return -1;      // 未能创建

}

// TODO: 如果不需要可停靠工具栏,则删除这三行

m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);

EnableDocking(CBRS_ALIGN_ANY);

DockControlBar(&m_wndToolBar);

return 0;

}

BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)

{

if( !CFrameWnd::PreCreateWindow(cs) )

return FALSE;

// TODO: 在此处通过修改

//  CREATESTRUCT cs 来修改窗口类或样式

return TRUE;

}

// CMainFrame 诊断

#ifdef _DEBUG

void CMainFrame::AssertValid() const

{

CFrameWnd::AssertValid();

}

void CMainFrame::Dump(CDumpContext& dc) const

{

CFrameWnd::Dump(dc);

}

#endif //_DEBUG

// CMainFrame 消息处理程序

BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext)

{     // TODO: 在此添加专用代码和/或调用基类

CRect rect;

GetClientRect(rect);

if (!m_wndSplitter.CreateStatic(this,1,2))

{

return FALSE;

}

if (!m_wndSplitter.CreateView(0,0,RUNTIME_CLASS(CLeftPaneView),CSize(rect.Width()/4,100),pContext))

{

return FALSE;

}

if (!m_wndSplitter.CreateView(0,1,RUNTIME_CLASS(CMainInterface),CSize(100,100),pContext))

{

return FALSE;

}

return TRUE;

//return CFrameWnd::OnCreateClient(lpcs, pContext);

}

Debug下调试结果:

1>------ 已启动生成: 项目: DigitalImageProcessingVersion01, 配置: Debug Win32 ------

1>  MainFrm.cpp

1>e:\visual studio 2008\project\digitalimageprocessingversion01\digitalimageprocessingversion01\mainfrm.cpp(13): error C2259: “CView”: 不能实例化抽象类

1>          由于下列成员:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值