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()
}



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


求高手,大神解决。
...全文
266 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
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 ?

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧