/*HDC hDC_Temp = ::GetDC(hWnd);
IPicture *pPic;
IStream *pStm;
BOOL bResult;
HANDLE hFile = NULL;
DWORD dwFileSize, dwByteRead;
hFile = CreateFile(lpImageFile, GENERIC_READ, FILE_SHARE_READ
, NULL, OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL, NULL);
if(hFile != INVALID_HANDLE_VALUE)
{
dwFileSize = GetFileSize(hFile, NULL);
if(dwFileSize == INVALID_FILE_SIZE)
return E_FAIL;
}
else
{
return E_FAIL;
}
HGLOBAL hGlobal = ::GlobalAlloc(GMEM_MOVEABLE, dwFileSize);
LPVOID pvData = NULL;
if(hGlobal == NULL)
{
AfxMessageBox(_T("图形文件分配出错"));
return E_FAIL;
}
if((pvData = GlobalLock(hGlobal)) == NULL)
{
AfxMessageBox(_T("内存快锁定出现问题"));
return E_FAIL;
}
ReadFile(hFile, pvData, dwFileSize, &dwByteRead, NULL);
GlobalUnlock(hGlobal);
if(CreateStreamOnHGlobal(hGlobal, TRUE, &pStm) != S_OK)
{
AfxMessageBox(_T("流初始化失败"));
return E_FAIL;
}
bResult = ::OleLoadPicture(pStm, dwFileSize, TRUE, IID_IPicture, (LPVOID*)&pPic);
OLE_XSIZE_HIMETRIC hmWidth;
OLE_XSIZE_HIMETRIC hmHeight;
pPic->get_Width(&hmWidth);
pPic->get_Height(&hmHeight);
bResult = pPic->Render(hDC_Temp, 0, 0, nScrWidth, nSrcHeight, 0, hmHeight, hmWidth, -hmHeight, NULL);
CloseHandle(hFile);
pPic->Release();
::GlobalFree(hGlobal);
if(bResult)
return S_OK;*/
IPicture
最新推荐文章于 2025-11-06 15:24:38 发布
本文介绍了一种使用Windows API从文件加载图像并将其显示在设备上下文(DC)中的方法。涉及创建文件句柄、内存分配、读取文件内容、创建流、加载图片对象以及释放资源等步骤。
1317

被折叠的 条评论
为什么被折叠?



