vcnet如何导入真彩色位图啊?(怎么导入后什么都没有插入啊)明天结帐

fanqing 2005-03-13 05:41:11
rt
...全文
72 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
daymist 2005-03-13
  • 打赏
  • 举报
回复
我碰到过楼主的情况,就是添加资源后资源试图中缺什么也没增加(我用的是VC72002),个人觉得是RC文件出错造成的问题。
碰到这种情况,我要么重建工程;要么新建位图,再把要导入的图复制进去。
dzq138 2005-03-13
  • 打赏
  • 举报
回复
..
masterz 2005-03-13
  • 打赏
  • 举报
回复
可以的,先把它当成位图倒入,然后替换vc.net生成的位图文件(vc。net保存的文件色彩变差了)。
或者你可以把那个bmp文件的后缀名改变一下,直接当成custom resource 导入。
HRESULT CommonDlgBase::get_picture(LPCTSTR restype,UINT resid,IPicture** pic)
{
HRSRC hResLoad = NULL; // handle to loaded resource
HMODULE hExe = NULL; // handle to existing .EXE file
HRSRC hRes = NULL; // handle/ptr. to res. info. in hExe
LPVOID lpResLock = NULL; // pointer to resource data

hRes = FindResource(hExe, MAKEINTRESOURCE(resid), restype);
if (hRes == NULL)
{
return E_FAIL;
}
hResLoad = (HRSRC)LoadResource(hExe, hRes);
if (hResLoad == NULL)
{
return E_FAIL;
}
lpResLock = LockResource(hResLoad);
if (lpResLock == NULL)
{
return E_FAIL;
}
int fileSize = SizeofResource(hExe, hRes);
//Verbose(_T("SizeofResource return %d"),fileSize);
CComPtr<IStream> pStream = NULL;
CreateStreamOnHGlobal(NULL,TRUE,&pStream);
if(pStream)
{
ULONG uwrite = 0;
pStream->Write(lpResLock, fileSize,&uwrite);
if(uwrite==fileSize)
{
LARGE_INTEGER li;
li.u.HighPart=0;
li.u.LowPart =0;
pStream->Seek( li,STREAM_SEEK_SET,0);
HRESULT hr=OleLoadPicture(pStream,0,TRUE,IID_IPicture,(LPVOID*)pic);
return hr;
}
}
else
return E_FAIL;
return 0;
}
BOOL AboutMe::OnEraseBkgnd(CDC* pDC)
{
IPicture* pPicture = m_pPicture;
if(pPicture)
{
long hmWidth,hmHeight; // HIMETRIC units
pPicture->get_Width(&hmWidth);
pPicture->get_Height(&hmHeight);
CSize sz(hmWidth,hmHeight);
pDC->HIMETRICtoDP(&sz);
CDC dcmem;
dcmem.CreateCompatibleDC(pDC);
CBitmap membmp;
CRect clientrc;
GetClientRect(&clientrc);
membmp.CreateCompatibleBitmap(pDC,clientrc.Width(),clientrc.Height());
CBitmap* pold=dcmem.SelectObject(&membmp);
pPicture->Render(dcmem.m_hDC,0,0,sz.cx,sz.cy,0,hmHeight,hmWidth,-hmHeight,NULL);
pDC->BitBlt(0,0,clientrc.Width(),clientrc.Height(),&dcmem,0,0,SRCCOPY);
dcmem.SelectObject(pold);
membmp.DeleteObject();
dcmem.DeleteDC();
return TRUE;
}
return CommonDlgBase::OnEraseBkgnd(pDC);
}

16,473

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧