在截图里,动态生成数据 size=1024*768
lpData=new char[size];
运行到这行语句,VC出现提示“内存不足”
不知道为什么?我的机子512M内存,重启之后立即运行该程序,还是会出现这问题,请问有什么解决办法?(数组最好动态生成,因为分辨率各机子不同)
lpData=new char[size];
运行到这行语句,VC出现提示“内存不足”
不知道为什么?我的机子512M内存,重启之后立即运行该程序,还是会出现这问题,请问有什么解决办法?(数组最好动态生成,因为分辨率各机子不同)
解决方案 »
- 菜单的启用,禁用和无效化
- 程序里如何快速判断1个IP对本机来说是一个本地地址
- 如何把一个对话框中的列表控件里的内容用最简单的方法打印出来???
- ___W2K服务程序中如何模拟按键___
- 程序运行时怎么去掉任务栏上的标签呢?
- 关于函数的应用??
- 请问用ATL OLE DB访问ACCESS数据库,如何判断记录的某栏位为空,如何设置某栏位为空
- 我是一个新手,我想知道什么是activex空件阿?他和一般的空件有什么区别阿?
- 请问在MFC使用Win API,要不要加入什么头文件?
- 请问侯捷的《深入浅出MFC》第二版面向怎样的读者?.......
- <<代码大全中文第2版>>下载地址
- 关于ListControl的消息NM_RCLICK的小问题(解决立刻结帖,多谢)
或许是在循环里的?又没有delete[] lpData?
int Width=GetSystemMetrics(SM_CXSCREEN);
int Height=GetSystemMetrics(SM_CYSCREEN);
bm.CreateCompatibleBitmap(&dc,Width,Height); CDC tdc;//内存位图
tdc.CreateCompatibleDC(&dc);
CBitmap*pOld=tdc.SelectObject(&bm);
tdc.BitBlt(0,0,Width,Height,&dc,0,0,SRCCOPY);
tdc.SelectObject(pOld);
bm.GetBitmap(&btm);//保存信息至btm
size=btm.bmWidthBytes*btm.bmHeight; lpData=new char[size];
运行到此处。。就进入catch了,发生异常,最后输出内存不足
循环一次之后有delete lpData
bmWidthBytes是什么?还是bmWidth??
你的代码没有对返回值进行错误检查就继续执行,不是好习惯.你的size是不是定义的是short类型的?感觉很像是这样的.太短了.
经调试btm.bmWidthBytes,btm.bmHeight为 -858993460
但是 size=687194768 我的size类型是int还有就是这段代码是另外一个程序可以运行 我把它移值到我的程序里面
却出错了
dc.CreateDC("DISPLAY",NULL,NULL,NULL);
怎么就截不到图呢,在原程序是正确的啊!