首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > VC >

"m_hDCCXX0030: 异常: 无法计算表达式的值"是什么原因啊

2012-12-26 
m_hDCCXX0030: 错误: 无法计算表达式的值是什么原因啊?我刚学习VC不久,写了一个绘制直线,圆和Bezier曲线

"m_hDCCXX0030: 错误: 无法计算表达式的值"是什么原因啊?
我刚学习VC不久,写了一个绘制直线,圆和Bezier曲线的程序,编译都通过没有问题,但在画Bezier曲线时,取点超过8点就会弹出“"0x5f481247"指令引用的"0x00000004"内存。该内存不能为"read"。”的消息框。进入调试后,显示“m_hDC CXX0030: 错误: 无法计算表达式的值”,“m_hAttribDCCXX0030: 错误: 无法计算表达式的值”   和     “m_bPrintingCXX0030: 错误: 无法计算表达式的值” 3个错误,这到底是什么原因啊?请各位大侠帮忙解答一下。
我的Bezier曲线源程序如下:

void CMyView::Bezier(DPOINT* p)      //画Bezier曲线
{
CDC* pDC=GetDC();
if (n<=0)
return;
if((p[n].x<p[0].x+1) && (p[n].x>p[0].x-1) && (p[n].y<p[0].y+1) && (p[n].y>p[0].y-1))
{
pDC->SetPixel(ROUND(p[0].x),ROUND(p[0].y), RGB(255,0,0));  //设置曲线颜色
 return; 
}
DPOINT *p1;
p1 = new DPOINT[n+1];
int i,j;
p1[0]=p[0];
for(i=1;i<=n;i++)
{
for(j=0;j<=n-i;j++)
{
p[j].x=(p[j].x+p[j+1].x)/2;
p[j].y=(p[j].y+p[j+1].y)/2;
}
p1[i]=p[0];
}
Bezier(p);
Bezier(p1);
delete p1;
}

[最优解释]
严重错误 CDC* pDC=GetDC();  需要release
你这是递归调用,
Bezier(p); 
Bezier(p1); 
dc资源是有限的
[其他解释]
 我加上了ReleaseDC(pDC)后,还是会出现以上三个问题啊,麻烦知道原因的大侠帮帮忙解答一下。
[其他解释]

我也遇到类似的情况(再添加了opencv1.0之后):
IplImage* image = cvLoadImage("G:\\tupian\\A.bmp"); //就是这一句


// demo2.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"

#include <cv.h> 

#include <highgui.h> 

#include <stdio.h> 

  

int main() 



         IplImage* image = cvLoadImage("G:\\tupian\\A.bmp"); 
  //IplImage* image = cvLoadImage("C:\\Users\\liuchang\\test1.bmp");

         if(!image){                  // 如果加载失败 

                   printf("error: 导入图片出错,很可能是路径出错 !\n"); 

                   return 0; 

         } 

             cvNamedWindow("win1",CV_WINDOW_AUTOSIZE);      // 创建一个窗口 

             cvMoveWindow("win1",100,100);                 // 定位一个窗口 
               printf("图片"); 
             cvShowImage("win1",image);                            // 在创建的窗口中显示一个图片 

                      // cvWaitKey(0);                                                // 等待用户输入,否则一闪而过 , 看不到图片 



         cvReleaseImage(&image);                                  // 注意使用完后一定要释放 
             
         return 0; 


 

热点排行