#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"
#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"
return 0;吧?
OnCreate must return 0 to continue the creation of the CWnd object. If the application returns –1, the window will be destroyed.
if (CView::OnCreate(lpCreateStruct) == -1)
return -1;
else
return 0;
->
y = new CSingleDocTemplate(IDR_MAINFRAME, d, w, v);
0001:000008c0 ??0myApp@@QAE@XZ 004018c0 f i chapt6SDI.obj
0001:00000900 ?InitInstance@myApp@@UAEHXZ 00401900 f i chapt6SDI.obj0x004018b9的位置找到了,但我不知道是不是myApp的InitInstance函数崩溃,又象是OmyApp???
{
if (CView::OnCreate(lpCreateStruct2) == -1)
return -1;//加上这两句
::AfxMessageBox("OnCreate");
return 1;
}
49 0001:000007d7 80 0001:00000900
80行崩溃地址