BOOL CWayCTL::SaveBmpAppFiles(DDSURFACEDESC ddsdbmp)
{
int i=0,j=0,k=0;/////////////////////////////////////////////
int nWidth=0,nHeight=0;
CString buf;
BYTE * tem;
CBitmap bmap;
BITMAP bm;
nWidth = ddsdbmp.dwWidth;
nHeight = ddsdbmp.dwHeight;
tem=new BYTE[nWidth*nHeight*4];
memcpy(tem,(BYTE *)ddsdbmp.lpSurface,nWidth*nHeight*4);
bm.bmPlanes = 1;
bm.bmWidth = nWidth;
bm.bmHeight = nHeight;
bm.bmWidthBytes = nWidth*4;
bm.bmType = 0;
bm.bmBitsPixel = 32;
bmap.CreateBitmapIndirect(&bm);
if(!bmap.SetBitmapBits(nWidth*nHeight*4,tem))/////////////////////////////////////
AfxMessageBox("SetBitmapBits");
delete []tem;
return true;
}看上面的函数,自己写的,照这上面的在我这里运行没有什么问题.
但是上面函数中有三个变量是多余的,就是第一行的i,j,k;理论上应该是可以去掉的,实际上去掉程序也没有报错,但是在运行的时候就有问题了.
bmap.SetBitmapBits(nWidth*nHeight*4,tem)成功的返回为非零,否则为0.照上面的运行没有问题一切正常.但是一担去掉I,J,K的定义后SetBitmapBits返回就为0了,很奇怪.应该是没有任何关系的啊.
而且如果将int i,j,k;换成是CString a,b,c;也是一切正常.也就是说只要在函数开头定义任意三个参数,函数SetBitmapBits工作就正常.否则就返回0.
为什么?很郁闷!
{
int i=0,j=0,k=0;/////////////////////////////////////////////
int nWidth=0,nHeight=0;
CString buf;
BYTE * tem;
CBitmap bmap;
BITMAP bm;
nWidth = ddsdbmp.dwWidth;
nHeight = ddsdbmp.dwHeight;
tem=new BYTE[nWidth*nHeight*4];
memcpy(tem,(BYTE *)ddsdbmp.lpSurface,nWidth*nHeight*4);
bm.bmPlanes = 1;
bm.bmWidth = nWidth;
bm.bmHeight = nHeight;
bm.bmWidthBytes = nWidth*4;
bm.bmType = 0;
bm.bmBitsPixel = 32;
bmap.CreateBitmapIndirect(&bm);
if(!bmap.SetBitmapBits(nWidth*nHeight*4,tem))/////////////////////////////////////
AfxMessageBox("SetBitmapBits");
delete []tem;
return true;
}看上面的函数,自己写的,照这上面的在我这里运行没有什么问题.
但是上面函数中有三个变量是多余的,就是第一行的i,j,k;理论上应该是可以去掉的,实际上去掉程序也没有报错,但是在运行的时候就有问题了.
bmap.SetBitmapBits(nWidth*nHeight*4,tem)成功的返回为非零,否则为0.照上面的运行没有问题一切正常.但是一担去掉I,J,K的定义后SetBitmapBits返回就为0了,很奇怪.应该是没有任何关系的啊.
而且如果将int i,j,k;换成是CString a,b,c;也是一切正常.也就是说只要在函数开头定义任意三个参数,函数SetBitmapBits工作就正常.否则就返回0.
为什么?很郁闷!
解决方案 »
- MFC剪切板程序?
- 如何用VC实现向服务器发送请求,并获得其返回值?
- CListCtrl列表头问题
- 当线程序函数启动时候,对话框上的其他BUTTON按钮就不响应鼠标点击了??? 请问怎样解决? 急!!!!
- 我老人家网恋了,狂撒200分,纪念那瞬间的美丽!
- 很菜的问题,不知道怎么解决?
- 高手救命啊~~~~~~~~~~~~~~~
- 这段代码有什么问题,如何改?
- 如何修改CListCtrl中的字体的颜色,选中行的背景色彩
- CDaoRecordset类的FindFirst()函数怎么用?
- 求助:控制按钮移动
- 如果系统或其它软件在向USB接口发出访问消息,如果截取?截取成功后,如果模拟一信号给程序,骗过程序的返回值?
还有就是我把函数声明改成了:
BOOL CWayCTL::SaveBmpAppFiles(DDSURFACEDESC *ddsdbmp,int flags,int AviFlags)
然后后面少定义了2个参数,函数也是一切正常,而且这两个参数的数值也是正常的
我的大脑快死机了,怎么也想不通,虽然目前整个程序没什么问题.但就是这里有个隐患.