如果要把jpg文件显示,可以找些jpg文件的读例程,
如果把jpg文件编译进exe,用自定义资源吧,好象只有那样才行
如果把jpg文件编译进exe,用自定义资源吧,好象只有那样才行
解决方案 »
- 一个比较奇怪的问题 大家进来看看。
- 请问OnPaint的一个问题
- 关于recv返回值的问题!
- 如何实现在改变对话框大小的时候 水平方向不能够拖动改变大小 而垂直方向可以实现大小的改变
- 再次提问关于DriverStudio的问题
- 如何打印表格以及在表格里面打印文字?(在线等)
- 奇怪,atl中不能用 互斥量了,有原码,大牛可以试一下
- 关于并口编程的中断问题(win9x下),很难、、、要分的还有得送!!
- 中毒了,求救!!!
- 在YAHOO上通过一定的关键词能查到你的网页,是否表示YAHOO搜索引擎提交成功?
- 如何在DLL中得到函数的参数?
- VC工具SPY++,拖一个东西经过某个窗口时,那个窗口外框会改变,这是怎么实现的?
可以说详细点吗?
标 题: 在VC中显示JPEG和GIF图像
发信站: 网易 BBS (Mon Oct 4 22:33:48 1999), 转信 以下文章来自水木清华 发信人: telnet (小飞象), 信区: VisualC
标 题: 不要怀疑了,JDK是对的
发信站: BBS 水木清华站 (Sun Oct 3 14:07:23 1999) 中午吃饭时试了一下,成功了。
我看了MSDN也以为只对BMP有用,结果是对JPG GIF都可以。
向不轻信MS的JDK致敬!
//admire JDK
以下是实验代码,大家可以在95下试试,我在98+IE5上成功。
是一个CView的例子,别忘了AfxOleInit
另,时间短,写得很乱,,大家自行改进吧! void CPICView::OnDraw(CDC* pDC)
{
CPICDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
IPicture *pPic;
IStream *pStm; CFileStatus fstatus;
CFile file;
LONG cb; if (file.Open("c:/test.jpg",CFile::modeRead)&&file.GetStatus("c:/test.jpg",
fstatus)&&
((cb = fstatus.m_size) != -1))
{
HGLOBAL hGlobal = GlobalAlloc(GMEM_MOVEABLE, cb);
LPVOID pvData = NULL;
if (hGlobal != NULL)
{
if ((pvData = GlobalLock(hGlobal)) != NULL)
{
file.ReadHuge(pvData, cb);
GlobalUnlock(hGlobal);
CreateStreamOnHGlobal(hGlobal, TRUE, &pStm); if(SUCCEEDED(OleLoadPicture(pStm,fstatus.m_size,TRUE,IID_IPicture,(LPVOID*
)&pPic)))
{
OLE_XSIZE_HIMETRIC hmWidth;
OLE_YSIZE_HIMETRIC hmHeight; pPic->get_Width(&hmWidth);
pPic->get_Height(&hmHeight); double fX,fY;
fX = (double)pDC->GetDeviceCaps(HORZRES)*(double)hmWidth/((double)pDC->Ge
tDeviceCaps(HORZSIZE)*100.0);
fY = (double)pDC->GetDeviceCaps(VERTRES)*(double)hmHeight/((double)pDC->G
etDeviceCaps(VERTSIZE)*100.0);
if(FAILED(pPic->Render(*pDC,0,0,(DWORD)fX,(DWORD)fY,0,hmHeight,hmWidth,-h
mHeight,NULL)))
AfxMessageBox("Failed To Render The picture!");
pPic->Release();
}
else
AfxMessageBox("Error Loading Picture From Stream!");
}
}
}
else
AfxMessageBox("Can't Open Image File!");
}