VC++单文档视图文件从磁盘中加载图像到窗口,出现以下错误,是什么原因,求高手解答。
我在视图类中添加一个成员变量,变量类型我定义为CString。是不是类型不对呢以下是程序出错的代码//加载位图m_hBmp=LoadImage(NULL,"Demo.bm...
我在视图类中添加一个成员变量,变量类型我定义为CString。是不是类型不对呢
以下是程序出错的代码
//加载位图
m_hBmp=LoadImage(NULL,"Demo.bmp",IMAGE_BITMAP,0,0,LR_LOADFROMFILE);****错误一
……………………
void COutputBmpView::OnDraw(CDC* pDC)
{
COutputBmpDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
// TODO: add draw code for native data here
CBitmap bmp; //定义一个位图对象;
bmp.Attach(m_hBmp); //将位图关联到位图句柄上;*******这地方出错了,错误二
CDC memDC; //定义一个设备上下文;
memDC.CreateCompatibleDC(pDC);//创建兼容的设备上下文
memDC.SelectObject(&bmp);//选中位图对像;
BITMAP BitInfo; //定义位图结构;
bmp.GetBitmap(&BitInfo);//获取位图信息;
int x=BitInfo.bmWidth; //获取位图的宽度和高度;
int y=BitInfo.bmHeight;
pDC->BitBlt(0,0,x,y,&memDC,0,0,SRCCOPY);//向窗口绘制位图;
bmp.Detach(); //分离位图句柄;
memDC.DeleteDC(); //释放设备上下文对象;
}
编译出现错误,提示错误一:error C2679: binary '=' : no operator defined which takes a right-hand operand of type 'void *' (or there is no acceptable conversion);
错误二:error C2664: 'Attach' : cannot convert parameter 1 from 'class CString' to 'void *'
No user-defined-conversion operator available that can perform this conversion, or the operator cannot be called
求高手帮助啊? 展开
以下是程序出错的代码
//加载位图
m_hBmp=LoadImage(NULL,"Demo.bmp",IMAGE_BITMAP,0,0,LR_LOADFROMFILE);****错误一
……………………
void COutputBmpView::OnDraw(CDC* pDC)
{
COutputBmpDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
// TODO: add draw code for native data here
CBitmap bmp; //定义一个位图对象;
bmp.Attach(m_hBmp); //将位图关联到位图句柄上;*******这地方出错了,错误二
CDC memDC; //定义一个设备上下文;
memDC.CreateCompatibleDC(pDC);//创建兼容的设备上下文
memDC.SelectObject(&bmp);//选中位图对像;
BITMAP BitInfo; //定义位图结构;
bmp.GetBitmap(&BitInfo);//获取位图信息;
int x=BitInfo.bmWidth; //获取位图的宽度和高度;
int y=BitInfo.bmHeight;
pDC->BitBlt(0,0,x,y,&memDC,0,0,SRCCOPY);//向窗口绘制位图;
bmp.Detach(); //分离位图句柄;
memDC.DeleteDC(); //释放设备上下文对象;
}
编译出现错误,提示错误一:error C2679: binary '=' : no operator defined which takes a right-hand operand of type 'void *' (or there is no acceptable conversion);
错误二:error C2664: 'Attach' : cannot convert parameter 1 from 'class CString' to 'void *'
No user-defined-conversion operator available that can perform this conversion, or the operator cannot be called
求高手帮助啊? 展开
1个回答
展开全部
LoadImage 第一个参数是模块(实例)句柄,只有在使用OEM图片的时候该参数才可以为NULL。
返回需要修改类型比如
HICON hProjectViewIcon = (HICON)LoadImage(AfxGetResourceHandle(),
MAKEINTRESOURCE(IDI_PROJECT_VIEW_HC), IMAGE_ICON,
::GetSystemMetrics(SM_CXSMICON), ::GetSystemMetrics(SM_CYSMICON), 0);
后面的编译错误是类型不正确。需要的参数是一个HGDIOBJ而你给的是一个CString.
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询