博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
cview类 public_MFC视图分割,声明CView类的对象,调试时报不能实例化抽象类的异常,还有报错“CLeftPaneView”:“:”的左边必须是类/结构/联合...
阅读量:6621 次
发布时间:2019-06-25

本文共 3204 字,大约阅读时间需要 10 分钟。

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>          由于下列成员:

转载地址:http://jucpo.baihongyu.com/

你可能感兴趣的文章
服务器端口及连接及应用程序间的关系
查看>>
Android监听HOME键的最简单的方法
查看>>
Java 数组
查看>>
inotify+rsync实现实时同步
查看>>
C#GUID
查看>>
ASP.NET 5 入门(1) - 建立和开发ASP.NET 5 项目
查看>>
spring+activemq中多个consumer同时处理消息时遇到的性能问题
查看>>
git clone 遇到的坑
查看>>
linux系统/var/log目录下的信息详解
查看>>
Android中利用LinearLayout继承实现ImageButton 转
查看>>
图片处理--边缘高亮
查看>>
Linux计划任务Crontab实例详解教程
查看>>
android之布局
查看>>
自定义服务器控件(处理不同的浏览器)
查看>>
解决IE6-IE7下li上下间距
查看>>
配置级别greenplum 可用空间计算
查看>>
聚集索引更新后会不会马上重新排序
查看>>
幸运大抽奖
查看>>
消除人声的方法
查看>>
Post请求
查看>>