LoadPicture(temp+“\\5.bmp");//temp即当前工程Debug/路径
图片放在当前工程目录Debug/下的
HBITMAP CdriverDlg::LoadPicture(LPCSTR mFile)
{
CString pFSize;
WCHAR wpath[MAX_PATH];
MultiByteToWideChar(CP_ACP, 0, mFile, -1, wpath, MAX_PATH);
由于程序需要这里只能加载图片的路径,不能用ID号来传,而我release后必须把5.bmp放在.exe同一目录下才能加载图片,现在有没有办法不通过调用图片ID号而把图片连同程序一起生成.exe呢?
图片放在当前工程目录Debug/下的
HBITMAP CdriverDlg::LoadPicture(LPCSTR mFile)
{
CString pFSize;
WCHAR wpath[MAX_PATH];
MultiByteToWideChar(CP_ACP, 0, mFile, -1, wpath, MAX_PATH);
由于程序需要这里只能加载图片的路径,不能用ID号来传,而我release后必须把5.bmp放在.exe同一目录下才能加载图片,现在有没有办法不通过调用图片ID号而把图片连同程序一起生成.exe呢?
解决方案 »
- 已知位图的句柄,能不能直接获得位图在内存中的首地址呢?
- 怎么让static txt控件实现自动换行?
- 清空画图
- 学习mfc的求助
- 在VC++ .Net 2005中开发非托管的MFC C++ 程序的界面还是那么困难吗?
- Socket菜鸟问题!!!
- 自己写SOCKET程序发送电子邮件,使用UTF-8、gb2312编码邮件内容在outlook或者 Foxmail中都正常显示。
- 今天在看ACE的一些代码的时候看到了do-while的奇怪用法,不知道有什么好处,望高手指点
- 请教COM, IDispatch相关问题!
- 文档串行化的问题
- MainFrame 如何关闭指定的子窗口childFrame
- 多线程服务器
http://qiusuoge.com/9268.html
{
CString pFSize;
WCHAR wpath[MAX_PATH];
MultiByteToWideChar(CP_ACP, 0, mFile, -1, wpath, MAX_PATH); IPicture* pPic;
OleLoadPicturePath(wpath, NULL, NULL, NULL, IID_IPicture,(LPVOID*)&pPic); if (pPic==NULL) return NULL;
HBITMAP hPic = NULL;
pPic->get_Handle((UINT*)&hPic); long nWidth=THUMWIDTH;
long nHeight=THUMHEIGHT; long mWid,mHei;
pPic->get_Height(&mHei);
pPic->get_Width(&mWid);
HBITMAP hPicRet = (HBITMAP)CopyImage(hPic, IMAGE_BITMAP, nWidth, nHeight ,LR_LOADFROMFILE|LR_CREATEDIBSECTION);
HBRUSH hBrushBorder=::CreateSolidBrush(RGB(192, 192, 192));
HBRUSH hBrushBk=::CreateSolidBrush(RGB(255, 255, 255));
RECT rcBorder;
rcBorder.left=rcBorder.top=0;
rcBorder.right=THUMWIDTH;
rcBorder.bottom=THUMHEIGHT;
const float fRatio=(float)THUMHEIGHT/THUMWIDTH;
int XDest, YDest, nDestWidth, nDestHeight;
const float fImgRatio=(float)mHei/mWid;
if(fImgRatio > fRatio)
{
nDestWidth=(THUMHEIGHT/fImgRatio);
XDest=(THUMWIDTH-nDestWidth)/2;
YDest=0;
nDestHeight=THUMHEIGHT;
}
else
{
XDest=0;
nDestWidth=THUMWIDTH;
nDestHeight=(THUMWIDTH*fImgRatio);
YDest=(THUMHEIGHT-nDestHeight)/2;
}
CClientDC cdc(this);
HDC hDC=::CreateCompatibleDC(cdc.m_hDC);
HBITMAP bm = CreateCompatibleBitmap(cdc.m_hDC, THUMWIDTH, THUMHEIGHT);
HBITMAP pOldBitmapImage = (HBITMAP)SelectObject(hDC,bm);
::FillRect(hDC, &rcBorder, hBrushBk);
::FrameRect(hDC, &rcBorder, hBrushBorder);
HBITMAP hBmReturn= (HBITMAP)::SelectObject(hDC, pOldBitmapImage);
CDC hdcSrc, hdcDst;
hdcSrc.CreateCompatibleDC(NULL);
hdcDst.CreateCompatibleDC(NULL);
// Load the bitmaps into memory DC
CBitmap* hbmSrcT = (CBitmap*) hdcSrc.SelectObject(hPicRet);
CBitmap* hbmDstT = (CBitmap*) hdcDst.SelectObject(hBmReturn);
hdcDst.BitBlt(XDest,YDest,nDestWidth, nDestHeight, &hdcSrc,-2,0,SRCCOPY);
pOldBitmapImage = (HBITMAP)SelectObject(hdcDst.m_hDC,bm);
DeleteDC(hDC);
DeleteObject(hBrushBorder);
DeleteObject(hBrushBk);
return pOldBitmapImage;
}
这是全部的代码,读起来比较费劲,麻烦帮看看是不是必须得传路径,谢谢了