我在自己的一个CTreedlg里面定义了一个vector<CPoint>point;
然后在CTreedlg的一个函数里随机生成10个点,并放在point容器.
void CTreeDlg::OnBnClickedOk()
{
srand( (unsigned)time( NULL ) );
int n=100;
for(int i=0,int n=100;i<=9;i++,n+=50)
{
CPoint ppp(rand()%n,rand()%n);
point.push_back(ppp);
} //OnOK();
}
然后在CstreView类里的ondraw函数里访问,
void CstreView::OnDraw(CDC* pDC)
{
CstreDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
if (!pDoc)
return; // TODO: 在此处为本机数据添加绘制代码
for(int i=1;i<=5;i++)
{
pDC->MoveTo(Dlg.point[i]);//Dlg为CstreView的成员函数
pDC->LineTo(Dlg.point[i+3]);
}
}可是在编译链接时发生内存冲突,并且指向 pDC->MoveTo(Dlg.point[i]);pDC->LineTo(Dlg.point[i+3]);
请问这是怎么回事啊
然后在CTreedlg的一个函数里随机生成10个点,并放在point容器.
void CTreeDlg::OnBnClickedOk()
{
srand( (unsigned)time( NULL ) );
int n=100;
for(int i=0,int n=100;i<=9;i++,n+=50)
{
CPoint ppp(rand()%n,rand()%n);
point.push_back(ppp);
} //OnOK();
}
然后在CstreView类里的ondraw函数里访问,
void CstreView::OnDraw(CDC* pDC)
{
CstreDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
if (!pDoc)
return; // TODO: 在此处为本机数据添加绘制代码
for(int i=1;i<=5;i++)
{
pDC->MoveTo(Dlg.point[i]);//Dlg为CstreView的成员函数
pDC->LineTo(Dlg.point[i+3]);
}
}可是在编译链接时发生内存冲突,并且指向 pDC->MoveTo(Dlg.point[i]);pDC->LineTo(Dlg.point[i+3]);
请问这是怎么回事啊
解决方案 »
- 想做一个多人聊天室程序,有个问题
- EVC消除模式对话框阴影
- com如何处理js脚本语言的数组
- 在dll中如何得到加载它的窗口句柄
- 在VC++中怎样连接SQL SERVER 数据库,ODBC的,ADO的,请出示源代码,100分
- RichEdit里使用EN_UPDATE对录入的汉字进行变色。但界面重绘出了问题。
- 请问是IOCP好,还是JetBytes好?我要用在大规模的语音和视频传输使用哪个好?
- vs.net2003 release 编译问题
- CSocket(服务端)中如何超时处理?!
- 我要写一个云台控制的程序,不知道谁能给我一些帮助(列子 源代码 子类的)?
- no compile tool has been associated with the file extention
- 关于 Vista下 VC++
从你得函数名OnBnClickedOk()猜测,是点击button后的操作,而OnDraw()函数在你点之前已经操作了,所以是越界访问了!!!!
你可以尝试将初始化放在窗体的构造函数里面看看。
顺便说一下你的描述:“编译链接时发生内存冲突”,这个编译过程中怎么会发生内存冲突呢,
程序没有运行前你的程序还没有载入内存就冲突了,这样的话是很牛的,呵呵。。