在EVC上对一幅位图的每个像素设置颜色,采用setpixel函数,同样的代码,在VC上可以运行得到正确结果,但放在EVC上运行就不起作用,编译可以通过也可以运行,就是没效果出来,不知是否setpixel在evc上不支持?
CDC *pDC = GetDC();
CBitmap bitmap;
bitmap.LoadBitmap(IDB_BMP_SUN);//IDB_BMP_SUN是位图资源ID
BITMAP bmpInfo;
bitmap.GetBitmap(&bmpInfo);
CDC bitmapDC;
bitmapDC.CreateCompatibleDC(pDC);
CBitmap* pOldBitmap = bitmapDC.SelectObject(&bitmap);
((CListBox *)GetDlgItem(IDC_LIST1))-> ResetContent();
((CListBox *)GetDlgItem(IDC_LIST1))-> SetHorizontalExtent(500);
for(int i=0;i <bmpInfo.bmWidth;i++)
{
for(int j=0;j <bmpInfo.bmHeight;j++)
{
COLORREF crOld=bitmapDC.SetPixel(i,j,RGB(255,0,0));
int nRet=GetLastError();//GetLastError()返回值为87,奇怪得很,说是参数不正确,不知为什么????????
CString strTemp;
strTemp.Format(_T( "nRet=%d;i=%d;j=%d;crOld=%X "),nRet,i,j,crOld);
((CListBox *)GetDlgItem(IDC_LIST1))-> AddString(strTemp);
}
}
pDC-> BitBlt(50, 15, bmpInfo.bmWidth, bmpInfo.bmHeight, &bitmapDC, 0, 0, SRCCOPY);
bitmap.DeleteObject();
bitmapDC.DeleteDC();
ReleaseDC(pDC);
------解决方案--------------------
是可以用的,我用过.从你上面的代码我也没看出什么问题.你打断点一步一步调试看看呢.