CChildView改变改变继承类

欢乐马_19e9 2014-01-14 01:08:38
创建一个MFC应用程序,不勾选“文档/视图结构支持(V)”

其他全部默认,直到完成。
// 把原来 CWnd 改变为 CListView
// class CChildView : public CWnd
class CChildView : public CListView

继续修改,算了直接贴所有文档

ChildView.h
// ChildView.h : CChildView 类的接口
//


#pragma once
#include <afxcview.h>

// CChildView 窗口

// 把原来 CWnd 改变为 CListView
// class CChildView : public CWnd
class CChildView : public CListView
{
// 构造
public:
CChildView();

// 属性
public:

// 操作
public:

// 重写
protected:
virtual BOOL PreCreateWindow(CREATESTRUCT& cs);

// 实现
public:
virtual ~CChildView();

// 生成的消息映射函数
protected:
afx_msg void OnPaint();
DECLARE_MESSAGE_MAP()
};


ChildView.cpp
// ChildView.cpp : CChildView 类的实现
//

#include "stdafx.h"
#include "asdff.h"
#include "ChildView.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#endif


// CChildView

CChildView::CChildView()
{
}

CChildView::~CChildView()
{
}


BEGIN_MESSAGE_MAP(CChildView, CListView)
ON_WM_PAINT()
END_MESSAGE_MAP()



// CChildView 消息处理程序

BOOL CChildView::PreCreateWindow(CREATESTRUCT& cs)
{
if (!CListView::PreCreateWindow(cs))
return FALSE;

//cs.dwExStyle |= WS_EX_CLIENTEDGE;
//cs.style &= ~WS_BORDER;
//cs.lpszClass = AfxRegisterWndClass(CS_HREDRAW|CS_VREDRAW|CS_DBLCLKS,
// ::LoadCursor(NULL, IDC_ARROW), reinterpret_cast<HBRUSH>(COLOR_WINDOW+1), NULL);

return TRUE;
}

void CChildView::OnPaint()
{
CPaintDC dc(this); // 用于绘制的设备上下文

// TODO: 在此处添加消息处理程序代码

// 不要为绘制消息而调用 CWnd::OnPaint()
}



程序可以正常运行,但在退出时出现如下错误


求高手,大神解决。
...全文
132 点赞 收藏 7
写回复
7 条回复
欢乐马_19e9 2014年01月14日
引用 6 楼 schlafenhamster 的回复:
"_CrtIsValidHeapPointer(pUserData)" 说明 pUserData 可能 不是 new 出来的, 所以 才有 上面的 方法。
3Q,关于不能调试,可以是硬件断点实现。 在想要断点的地方插入
__asm int 3
开启DEBUG模式就OK了。
回复 点赞
schlafenhamster 2014年01月14日
"_CrtIsValidHeapPointer(pUserData)" 说明 pUserData 可能 不是 new 出来的, 所以 才有 上面的 方法。
回复 点赞
欢乐马_19e9 2014年01月14日
写下错误报告,以便其他道友可以搜索到。 Debug Assertion Failed! Program: ... File:dbgheap.c Line:1252 Expression: _CrtIsValidHeapPointer(pUserData)
回复 点赞
欢乐马_19e9 2014年01月14日
引用 2 楼 schlafenhamster 的回复:
这个由向导 产生的 CChildView , 改成 CListView 后, 必须 动态 Create 。 即: CMainFrame 中 定义是: CChildView m_wndView; 要改为: CChildView *m_pwndView; 产生时先: m_pwndView=new CChildView; 然后 原句 : if(!m_pwndView->Create(....... { ...... }
谢大神,此方法解决。
回复 点赞
欢乐马_19e9 2014年01月14日
引用 1 楼 schlafenhamster 的回复:
既然"不勾选“文档/视图结构支持(V)”" 那来的 CChildView ?
这个我不清楚,不过这个确实有。
回复 点赞
schlafenhamster 2014年01月14日
这个由向导 产生的 CChildView , 改成 CListView 后, 必须 动态 Create 。 即: CMainFrame 中 定义是: CChildView m_wndView; 要改为: CChildView *m_pwndView; 产生时先: m_pwndView=new CChildView; 然后 原句 : if(!m_pwndView->Create(....... { ...... }
回复 点赞
schlafenhamster 2014年01月14日
既然"不勾选“文档/视图结构支持(V)”" 那来的 CChildView ?
回复 点赞
发动态
发帖子
界面
创建于2007-09-28

7973

社区成员

11.5w+

社区内容

VC/MFC 界面
社区公告
暂无公告