在VC2005中向资源文件 *.rc 中可以插入任意文件。最后他们会被嵌入到 EXE 文件中。
请不要回答:在“资源文件”上点击右键,在弹出菜单里选择“添加”再选择“添加资源”。
我最开始就是这么做的,如果你选择添加的资源类型为 Bitmap ,并且选择一个 jpg 文件以后,你会发现,你在硬盘上的 jpg 文件被 vc 修改成了 bmp 文件。。
于是,我选择自定义类型,来加入 JPG 文件,但是问题就在这里,自定义文件要求你输入十六进制的数据,我尝试着用记事本打开 JPG 文件,然后复制过去,但是不行,文件格式不对,在程序中无法对 JPG 资源进行读取。最后,请问,如何把 JPG 文件作为“自定义”类型加入到 VC 的资源文件(*.rc)中。。
请不要回答:在“资源文件”上点击右键,在弹出菜单里选择“添加”再选择“添加资源”。
我最开始就是这么做的,如果你选择添加的资源类型为 Bitmap ,并且选择一个 jpg 文件以后,你会发现,你在硬盘上的 jpg 文件被 vc 修改成了 bmp 文件。。
于是,我选择自定义类型,来加入 JPG 文件,但是问题就在这里,自定义文件要求你输入十六进制的数据,我尝试着用记事本打开 JPG 文件,然后复制过去,但是不行,文件格式不对,在程序中无法对 JPG 资源进行读取。最后,请问,如何把 JPG 文件作为“自定义”类型加入到 VC 的资源文件(*.rc)中。。
解决方案 »
- 国庆假好长
- 求助啊,用vs2012编好后的程序,其他电脑运行不了
- 如何让自己的程序适应不同的分辨率????
- 为什么提示Cannot open include file: 'afxdhtml.h': No such file or directory (分数
- 关于菜单ID的问题
- 关于字体的几个问题?
- 各位大虾机器在局域网中,自己通过猫上网,如何知道自己的ip地址?
- 有没有人会在ie上加一个按钮,想网络蚂蚁那样???????
- 怎样读光盘上的mp4文件,谢谢指教。
- %%%%%%%%%--to lpt(独云),快收信吧!!!--%%%%%%%%%
- 有什么好用的网络包分析工具?谢谢!
- xtreme toolkit ocx 源代码?
导入的话不需要选择类型,系统会自动在工程的resources树上形成一个同bitmap同级别的JPG的filter你导入后需要用CImage类,下面是加载的方法和我用的函数
m_pImage = new CImage(); ImageFromIDResource(*m_pImage, IDB_PNG_IDISK, _T("PNG")); HBITMAP hBitmap = m_pImage->Detach(); m_statBitmap.SetBitmap(hBitmap);void ImageFromIDResource(CImage& image, UINT nID, LPCTSTR lpType)
{
HINSTANCE hInst = AfxGetResourceHandle();
HRSRC hRsrc = ::FindResource (hInst,MAKEINTRESOURCE(nID),lpType); if(hRsrc == NULL)
return; DWORD dwLen = SizeofResource(hInst, hRsrc); BYTE* lpRsrc = (BYTE*)LoadResource(hInst, hRsrc); if (!lpRsrc)
return;; HGLOBAL m_hMem = GlobalAlloc(GMEM_FIXED, dwLen);
BYTE* pmem = (BYTE*)GlobalLock(m_hMem);
memcpy(pmem,lpRsrc,dwLen);
IStream* pstm;
CreateStreamOnHGlobal(m_hMem,FALSE,&pstm); image.Load(pstm);
GlobalUnlock(m_hMem);
pstm->Release();
FreeResource(lpRsrc);
}
在 *.RC 文件中是这样:IDR_RCDATA1 RCDATA "rcdata1.bin"
在代码中,只能使用 ID ,也就是“IDR_RCDATA1”去填充相关函数的参数,那么,如何由这个ID去得到文件名“rcdata1.bin”呢???
IDR_RCDATA1 RCDATA "rcdata1.bin"//in Cpp File
//这么使用没有问题
D3DXCreateTextureFromResourceA(m_lpD3DDevice,NULL,MAKEINTRESOURCEA(IDR_RCDATA1),&sxMesh->lpMeshTextures[i]))//这么使用报错????
D3DXCreateTextureFromResourceA(m_lpD3DDevice,NULL,"IDR_RCDATA1",&sxMesh->lpMeshTextures[i]))
为什么下面一种调用方式不行呢??