在MFC中如何读取256色位图或者24色真彩色bmp位图,请高手指点!
雪域迷影 2010-05-09 09:44:39 在菜单编辑器中添加打开位图菜单项并添加了bmp位图响应函数,
如下所示:
void CBTTMAPView::OnBmpOpen()
{
// TODO: Add your command handler code here
//CBTTMAPDoc* pDoc = GetDocument();
CString str;
CString filter="Bitmap Files(*.bmp)|*.bmp|Wmf Files(*.wmf)|*.wmf||"; //文件扩展名,充当文件的过滤器
CFileDialog dlg(TRUE,NULL,NULL,OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,(LPCTSTR)filter,NULL);
//创建打开文件对话框对象,默认的扩展名为".bmp"
//调用DoModal()函数显示打开文件对话框
if (dlg.DoModal() == IDOK)
{
//获取完整的文件名,包括目录名和扩展名,如"C:\res\demo.bmp"
str=dlg.GetPathName();
HBITMAP hBitmap=(HBITMAP)LoadImage(AfxGetInstanceHandle(),str,IMAGE_BITMAP,0,0,LR_LOADFROMFILE|LR_CREATEDIBSECTION);
CDC* pDC=GetDC();//获取设备上下文
CDC dcimage;
m_Bitmap.Attach(hBitmap); //关联位图对象
dcimage.CreateCompatibleDC(pDC); //内存DC
m_Bitmap.GetBitmap(&bmp); //获取位图信息
dcimage.SelectObject(&m_Bitmap); //选取位图对象
m_nWidth=bmp.bmWidth;
m_nHeight=bmp.bmHeight;
pDC->StretchBlt(0,0,(int)(bmp.bmWidth*m_dWrate),(int)(bmp.bmHeight*m_dHrate),&dcimage,0,0,bmp.bmWidth,bmp.bmHeight,SRCCOPY);
}
请问对文件过滤器filter进行处理的话能专门读取256色位图或者是24色位图吗?