很急,在线等待,就只需要最基本的文件打开,保存。VC程序。跪求!!
解决方案 »
- VC++6.0读取EXCEL文件出错,着急!!!
- vc 资源问题
- 如何创建列表控件的表头?
- 使用 Media Player 控件时,这是什么错误提示?
- windows API 中到底有没有定位打印的函数啊!急!!急!!急!!
- 请专家讲解 IHTMLElementCollection::item 和 IUnknown::QueryInterface 的使用和参数的设定。
- 在VC/MFC 和 DELPHI 徘徊,希望大家给点建议!
- char* ch或者char ch1[10]在赋值之后再次初始化?
- 关于单选按钮
- 提示错误:fatal error C1010: unexpected end of file while looking for precompiled header directive
- 运行error
- 请教如何给某结构指针赋初值?
{
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_COPYDELETEORG); // Create Brushes for Border and BackGround
HBRUSH hBrushBorder=::CreateSolidBrush(RGB(192, 192, 192));
HBRUSH hBrushBk=::CreateSolidBrush(RGB(255, 255, 255)); // Border Size
RECT rcBorder;
rcBorder.left=rcBorder.top=0;
rcBorder.right=THUMWIDTH;
rcBorder.bottom=THUMHEIGHT; const float fRatio=(float)THUMHEIGHT/THUMWIDTH; int XDest, YDest, nDestWidth, nDestHeight;
// Calculate Rect to fit to canvas
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);
// Draw Background
::FillRect(hDC, &rcBorder, hBrushBk); // Draw Border
::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); // This call sets up the mask bitmap.
hdcDst.BitBlt(XDest,YDest,nDestWidth, nDestHeight, &hdcSrc,0,0,SRCCOPY);
//hdcDst.StretchBlt(XDest,YDest,nDestWidth, nDestHeight, &hdcSrc,0,0,48,48,SRCCOPY); pOldBitmapImage = (HBITMAP)SelectObject(hdcDst.m_hDC,bm); // Release used DC and Object
DeleteDC(hDC);
DeleteObject(hBrushBorder);
DeleteObject(hBrushBk); return pOldBitmapImage;}通过CBitmap的Attach可以把HBITMAP选入CBitmap,然后选入DC,再Bitblt就完事儿如果用GDI+,更方便Graphics g(pDC->m_hDC);
Bitmap bmp(L"c:\\xx.bmp");
g.DrawImage(&bmp, 0, 0);