个手写的MFC程序,四个基本类,编译没有错,运行时有内存错误,忽略也不可以正常运行。但希望能解决

zhoujiamurong 2004-09-21 03:53:41
#include <afxwin.h>
#include <afxext.h>
#include "resource.h"

class MyFrameWnd : public CFrameWnd
{
DECLARE_DYNCREATE(MyFrameWnd)
public :
MyFrameWnd()
{
// Create(0,"ddd");
}
};
IMPLEMENT_DYNCREATE(MyFrameWnd,CFrameWnd)


class mydoc : public CDocument
{
DECLARE_DYNCREATE(mydoc)
public :
CString s;
CPoint point;

mydoc()
{
s="Welcome to SDI";
point.x=250;
point.y=100;
}
BOOL OnNewDocument()
{
::AfxMessageBox("OnNewDocument");
return TRUE;
}
};

IMPLEMENT_DYNCREATE(mydoc,CDocument)

class myview : public CView
{
DECLARE_DYNCREATE(myview)
public :
void OnDraw(CDC *d)
{
mydoc *b;
b=(mydoc *)m_pDocument;
d->SetTextColor(RGB(0,0,255));
d->TextOut(b->point.x,b->point.y,b->s);
}

void OnLButtonDown(UINT i,CPoint p)
{
mydoc *b;
b=(mydoc *)m_pDocument;
b->point.x=p.x;
b->point.y=p.y;
Invalidate();

}
int OnCreate(LPCREATESTRUCT lpCreateStruct2)
{
::AfxMessageBox("OnCreate");
return 1;
}

DECLARE_MESSAGE_MAP()
};

IMPLEMENT_DYNCREATE(myview,CView)

BEGIN_MESSAGE_MAP(myview,CView)
ON_WM_CREATE()//如果注释掉这个就没有问题??????但OnCreate不能够映射了
ON_WM_LBUTTONDOWN()
END_MESSAGE_MAP()

class myApp : public CWinApp
{
public :
int InitInstance()
{
CSingleDocTemplate *y;
CRuntimeClass *w,*d,*v;
//d=((CRuntimeClass*)(&mydoc::classmydoc));
d=RUNTIME_CLASS(mydoc);
w=RUNTIME_CLASS(MyFrameWnd);
v=RUNTIME_CLASS(myview);
y=new CSingleDocTemplate(IDR_MENU1,d,w,v);
AddDocTemplate(y);
OnFileNew();
return 1;
}

};


myApp a;

********************************
在资源中有字符串AFX_IDS_UNTITLED “aa”
还有一个菜单IDR_MENU1
错误 "0x004018b9"指令引用的"0x00000058"内存。该内存不能为"read"
...全文
206 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhoujiamurong 2004-09-21
  • 打赏
  • 举报
回复
这个崩溃地址不准确,zhaogaojian(米柑年成) 高手,你就花几分钟讲一下吧?
zhoujiamurong 2004-09-21
  • 打赏
  • 举报
回复
zhaogaojian(米柑年成) 高手,你可以说一下为什么吗?谢谢
zhoujiamurong 2004-09-21
  • 打赏
  • 举报
回复
0x004018b9-0x400000-0x1000=0x000008b9
49 0001:000007d7 80 0001:00000900
80行崩溃地址
zhaogaojian 2004-09-21
  • 打赏
  • 举报
回复
int OnCreate(LPCREATESTRUCT lpCreateStruct2)
{
if (CView::OnCreate(lpCreateStruct2) == -1)
return -1;//加上这两句

::AfxMessageBox("OnCreate");
return 1;
}

sungengyu 2004-09-21
  • 打赏
  • 举报
回复
在 debug 下调试一下啊!
zhoujiamurong 2004-09-21
  • 打赏
  • 举报
回复
0001:00000890 ??1myApp@@UAE@XZ 00401890 f i chapt6SDI.obj
0001:000008c0 ??0myApp@@QAE@XZ 004018c0 f i chapt6SDI.obj
0001:00000900 ?InitInstance@myApp@@UAEHXZ 00401900 f i chapt6SDI.obj

0x004018b9的位置找到了,但我不知道是不是myApp的InitInstance函数崩溃,又象是OmyApp???
zhoujiamurong 2004-09-21
  • 打赏
  • 举报
回复
虽然还没解决,先谢谢大家
zhoujiamurong 2004-09-21
  • 打赏
  • 举报
回复
IDR_MENU1是我用的菜单,我没有用系统菜单
ghxmagic 2004-09-21
  • 打赏
  • 举报
回复
y=new CSingleDocTemplate(IDR_MENU1,d,w,v);
->
y = new CSingleDocTemplate(IDR_MAINFRAME, d, w, v);
DentistryDoctor 2004-09-21
  • 打赏
  • 举报
回复
0x004018b9,根据MAP文件,看下是什么代码。
老夏Max 2004-09-21
  • 打赏
  • 举报
回复
The CREATESTRUCT structure contains copies of the parameters used to create the window.

老夏Max 2004-09-21
  • 打赏
  • 举报
回复
也许你应该添加:使用一下基类的处理,MFC太让人迷茫了!
if (CView::OnCreate(lpCreateStruct) == -1)
return -1;
else
return 0;
老夏Max 2004-09-21
  • 打赏
  • 举报
回复
引自MSDN:
OnCreate must return 0 to continue the creation of the CWnd object. If the application returns –1, the window will be destroyed.

zhoujiamurong 2004-09-21
  • 打赏
  • 举报
回复
OnCreate中return 0;和return 1;效果一样
oyljerry 2004-09-21
  • 打赏
  • 举报
回复
内存操作错误
huaboy408 2004-09-21
  • 打赏
  • 举报
回复
进入DEBUG调试,查询错误代码

多是指针没有释放的原因

http://community.csdn.net/Expert/topic/2971/2971645.xml?temp=.244961
老夏Max 2004-09-21
  • 打赏
  • 举报
回复
应该在OnCreate中
return 0;吧?
老夏Max 2004-09-21
  • 打赏
  • 举报
回复
你在OnCreate中做了什么?代码!!
roger_ding 2004-09-21
  • 打赏
  • 举报
回复
当出现错误时,按“retry”,然后在call stack list中回溯检查
fxj51983 2004-09-21
  • 打赏
  • 举报
回复
重新建个工程试试!主要是你自己做了什么操作!写了什么代码没有!

16,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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