读书人

在对话框中加入位图时出现的有关问题amp;

发布时间: 2012-01-11 22:28:46 作者: rapoo

在对话框中加入位图时出现的问题·急
在对话框中的指定位置加入位图时,遇到了如下的问题:
d:\My Documents\Visual Studio Projects\Rect\RectDlg.cpp(208): error C2664: “IPicture::Render” : 不能将参数 1 从“CDC *”转换为“HDC”
我是想在Pictrue Control控件的一个位置添加一个位图,但是出现了上述错误,现在还没有想到解决的办法,各位大哥帮我分析下啊。谢谢了!
下面是程序的部分代码:
CWnd* pWnd = GetDlgItem(IDC_STATIC1);
CClientDC dc(pWnd);
HANDLE hFile = CreateFile( "1.bmp ",GENERIC_READ,FILE_SHARE_READ,NULL,
OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);
if(INVALID_HANDLE_VALUE==hFile)
return;
DWORD dsize,outsize;
dsize= GetFileSize(hFile,NULL);
char *data = new char[dsize];
ReadFile(hFile,data,dsize,&outsize,NULL);


HGLOBAL hGlobal = GlobalAlloc(GMEM_MOVEABLE,dsize);
LPVOID pvData = GlobalLock(hGlobal );
memcpy(pvData,data,dsize);
GlobalUnlock(hGlobal);

IPicture *pic = NULL;
LPSTREAM pStream = NULL;
HRESULT hr = CreateStreamOnHGlobal(hGlobal, TRUE, &pStream );
OleLoadPicture(pStream, 0, FALSE,IID_IPicture, (void **)&pic);
pStream-> Release();

OLE_XSIZE_HIMETRIC cx;
OLE_YSIZE_HIMETRIC cy;
pic-> get_Width(&cx);
pic-> get_Height(&cy);


RECT bounds;
bounds.top = 0;
bounds.bottom = 100;
bounds.left = 0;
bounds.right = 100;

//错误在这一行pic-> Render((pWnd-> GetDC()), bounds.left, bounds.bottom, bounds.right - bounds.left,
bounds.top - bounds.bottom, 0, 0, cx, cy, NULL);

pic-> Release();
delete data;

[解决办法]
pic-> Render((pWnd-> GetDC()-> GetSafeHdc())

读书人网 >VC/MFC

热点推荐