新建一个单文档程序
View中添加三个变量:
CBitmap m_bitmap;
HBITMAP m_hBmp;
BITMAP m_bmp;
//保存图像数据(高宽)
菜单栏加一菜单项“打开位图”,ID为ID_NEWBITMAP
给该菜单项添加响应函数:
void CTestBltView::OnNewbitmap()
{
// TODO: 在此添加命令处理程序代码
CFileDialog fileDlg(TRUE);
//
CString szFileName; //扩展名
if(IDOK==fileDlg.DoModal())
{
szFileName=fileDlg.GetPathName();
//获得扩展名
//externName = fileDlg.GetFileExt();
m_hBmp=(HBITMAP)LoadImage(NULL,szFileName,IMAGE_BITMAP,
0,0,LR_LOADFROMFILE);
//由HBITMAP得到相关联的CBitmap
m_bitmap.Attach(m_hBmp);
//m_bmp接收当前位图的信息,
m_bitmap.GetBitmap(&m_bmp);
Invalidate();
}
}
OnDraw()函数中显示位图:
void CTestBltView::OnDraw(CDC* pDC)
{
CTestBltDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
if (!pDoc)
return;
CDC memDC;
memDC.CreateCompatibleDC(pDC);
memDC.SelectObject(m_bitmap);
CRect rect;
GetClientRect(rect);
pDC->StretchBlt(0,0,rect.Width(),rect.Height(),&memDC,0,0,
m_bmp.bmWidth,m_bmp.bmHeight,SRCCOPY);
}