VC++ 6.0 位图打开、显示和保存操作
用到的数据:
char *m_pDibData;
int m_nBitCount;
int m_nHeight;
int m_nWidth;
CString m_fileName;
HGLOBAL m_hDIB;
void CBitView::OnFileOpen()
{
// TODO: Add your command handler code here
//打开对话框,并获得要打开的位图的路径,保存在 m_fileName 中
static char szFilter[] = "位图文件(*.bmp;*.dib) | *.bmp;*.dib | All Files(*.*) | *.* ||";
CFileDialog dlg(true,"*.bmp",NULL, OFN_HIDEREADONLY |
OFN_OVERWRITEPROMPT,szFilter);
if (dlg.DoModal()==IDOK)
{
UpdateData(true);
m_fileName = dlg.GetPathName();
}
//新建 CFile 类对象 dibFile,并用只读的模式打开
CFile dibFile;
if(!dibFile.Open(m_fileName,CFile::modeRead))
{
AfxMessageBox("Can not open DIB file...");
return;
}
//接下来读取位图文件的文件头
//新建 一个位图文件头变量
BITMAPFILEHEADER bitmapFileHeader;
//从位图文件中读取与位图文件头大小 的字节到文件头变量中
UINT bitmapFileHeaderSize =
dibFile.Read((void*)&bitmapFileHeader,sizeof(BITMAPFILEHEADER));
if (bitmapFileHeaderSize != sizeof(BITMAPFILEHEADER))
{
AfxMessageBox("Failed in reading file");
return;
}
//判断读取的文件是否为位图文件
if (bitmapFileHeader.bfType == 0x4d42)