程序目前编译都OK
但执行后没有显示*.BMP
要把*.BMP添加到哪里,可以让程序调用
但执行后没有显示*.BMP
要把*.BMP添加到哪里,可以让程序调用
解决方案 »
- 关于游戏界面形成?急在线等 都来讨论下
- 如何让Check box默认是选中的
- 在VC2005中,能在按钮上加图片吗?
- 如何实现一个多列的CListBox?
- 我的blog今天开张拉~!欢迎大家去捧场啊~!
- 请问如何不使用向导,用ADO连接Oracle数据库????
- 关于GDI+,如何缩放Image/Bitmap,注意,并不是在画的时候,而是创建完成,画之前,对内存的信息进行缩放
- 两个dialog如何传递变量?
- 菜鸟散分:这端代码老是不行,关于DirectDraw
- 关于WndProc 的一个问题!!!!
- 标签打印系统怎么写?
- 在VC++ 6.0 中如何使用VC7.0中的CDhtmlDialog类?
{
// TODO: Add your command handler code here
LPCTSTR lpszFilter="BMP Files(*.bmp)|*.bmp|任何文件|*.*||";
CFileDialog dlg1(TRUE,lpszFilter,NULL,OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,lpszFilter,NULL);
CString filename;
CFile file;
BITMAPFILEHEADER bf; //打开文件对话框
if(dlg1.DoModal()==IDOK)
{
filename=dlg1.GetPathName();
if(file.Open(filename,CFile::modeRead|CFile::shareDenyNone,NULL)==0)
{
//读取文件失败
AfxMessageBox("无法打开文件!",MB_OK,0);
return;
}
//读取文件头
file.Read(&bf,sizeof(bf));
//判断是否是BMP文件
if(bf.bfType!=0x4d42)//'BM'
{
AfxMessageBox("非BMP文件!",MB_OK,0);
return;
}
//判断文件是否损坏
if(file.GetLength()!=bf.bfSize)
{
AfxMessageBox("文件已损坏,请检查!",MB_OK,0);
return;
} //读文件信息头
file.Read(&bi,sizeof(bi));
//计算调色板数目
numQuad=0;
if(bi.biBitCount<24)
{
numQuad=1<<bi.biBitCount;
}
//为图像信息pbi申请空间
pbi=(BITMAPINFO*)HeapAlloc(GetProcessHeap(),0,sizeof(BITMAPINFOHEADER)+numQuad*sizeof(RGBQUAD));
memcpy(pbi,&bi,sizeof(bi));
quad=(RGBQUAD*)((BYTE*)pbi+sizeof(BITMAPINFOHEADER));
//读取调色板
if(numQuad!=0)
{
file.Read(quad,sizeof(RGBQUAD)*numQuad);
}
//为图像数据申请空间
bi.biSizeImage=bf.bfSize-bf.bfOffBits;
lpBuf=(BYTE*)HeapAlloc(GetProcessHeap(),0,bi.biSizeImage);
//读取图像数据
file.Read(lpBuf,bi.biSizeImage);
//图像读取完毕,关闭文件,设置标志
file.Close();
flag=1;
zoomfactor=1;
lpshowbuf=NULL;
PrepareShowdata();
UpdateAllViews(NULL,0,NULL);
}
}Second ,to draw the bmp on the device contextvoid CBMPViewerView::OnPaint()
{
CPaintDC dc(this); // device context for painting
// TODO: Add your message handler code here
//得到文档指针
CBMPViewerDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc); //是否已打开某个BMP文件
if(pDoc->flag==1)
{
//指定是显示的颜色
SetDIBitsToDevice(dc.m_hDC,0,0,pDoc->pbi->bmiHeader.biWidth,
pDoc->pbi->bmiHeader.biHeight,0,0,0,
pDoc->pbi->bmiHeader.biHeight,pDoc->lpshowbuf,
pDoc->pbi,DIB_RGB_COLORS);
}
// Do not call CView::OnPaint() for painting messages
}
bmp文件无法导入进资源里 ResourceView中