当前位置: 代码迷 >> VC >> "m_hDCCXX0030: 异常: 无法计算表达式的值"是什么原因啊
  详细解决方案

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

热度:9714   发布时间:2013-02-25 00:00:00.0
"m_hDCCXX0030: 错误: 无法计算表达式的值"是什么原因啊?
我刚学习VC不久,写了一个绘制直线,圆和Bezier曲线的程序,编译都通过没有问题,但在画Bezier曲线时,取点超过8点就会弹出“"0x5f481247"指令引用的"0x00000004"内存。该内存不能为"read"。”的消息框。进入调试后,显示“m_hDC CXX0030: 错误: 无法计算表达式的值”,“m_hAttribDC CXX0030: 错误: 无法计算表达式的值”   和     “m_bPrinting CXX0030: 错误: 无法计算表达式的值” 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);                                                // 等待用户输入,否则一闪而过 , 看不到图片 
  相关解决方案