在VS2005上编写了一段位图绘图程序,想实现双缓冲效果。程序在PC上能够正常运行,但是放到WinCE6上时却不能正常运行。对CreateCompatibleBitmap返回GetLastError的值是6,请问这代表什么意思?最关键的是,为什么在PC端上可以运行的程序在WinCE上不能运行,是因为内存限制,还是由于我使用的是Unicode工程?烦请各位大侠赐教。
void CDraw_ARMDlg::OnBnClickedButtonDraw2()
{
double dData[110];
memset(dData, 0, 110);
USHORT usCol = 4;
CDraw_ARMDlg *mainWnd=(CDraw_ARMDlg*)AfxGetApp()->GetMainWnd();
CRect rect;
GetClientRect(&rect); // 获得客户区窗口大小
width = rect.Width();
height = rect.Height();
double dSin[10] = {1,2,3,4,5,6,7,8,9,10};
CDC MemDC; //首先定义一个显示设备对象
CDC MemDC2;
CBitmap MemBitmap; //定义一个位图对象
CBitmap MemBitmap2; //定义一个位图对象
//随后建立与屏幕显示兼容的内存显示设备
MemDC.CreateCompatibleDC(NULL);
MemDC2.CreateCompatibleDC(NULL);
//下面建立一个与屏幕显示兼容的位图,
if (!MemBitmap.CreateCompatibleBitmap(dc_Draw,width,height))
{
CString strTemp;
strTemp.Format(_T("1 error code:%d from Bitmap1\n"), GetLastError());
AfxMessageBox(strTemp);
}
if (!MemBitmap2.CreateCompatibleBitmap(dc_Draw,width,height))
{
CString strTemp;
strTemp.Format(_T("1 error code:%d from Bitmap2\n"), GetLastError());
AfxMessageBox(strTemp);
}
//将位图选入到内存显示设备中
//只有选入了位图的内存显示设备才有地方绘图,画到指定的位图上
CBitmap *pOldBit=MemDC.SelectObject(&MemBitmap);
CBitmap *pOldBit2=MemDC2.SelectObject(&MemBitmap2);
}
}
------解决思路----------------------
错误代码 6 是:句柄无效。
MemBitmap 和 MemBitmap2 你只是定义了,没有初始化就开始使用了,当然会报这样的错误。
------解决思路----------------------
你是不是dc_Draw 这个指针没初始化正确,我说的是没句柄。。
你设置断点,然后看看。
------解决思路----------------------
错误6不就是 无效句柄吗,所以dc_Draw 应该不对,好好查查。