VC8.0中的一些心得体会——打开位图
2006-03-10 16:39
295 查看
void CTRYDoc::OnFileOpen()
{
// TODO: 在此添加命令处理程序代码
CString str = _T("BMP");
CString str1 = _T("Image files (*.BMP)|*.BMP||");
CString str2 = _T("位图打开");
CString str3 = _T("取消读入位图");
CString str4 = _T("读入位图失败");
CString str5 = _T("不是位图格式文件");
LPCWSTR sext = (LPCWSTR)str;
LPCWSTR sfiltr = (LPCWSTR)str1;
LPCWSTR sz = (LPCWSTR)str2;
LPCWSTR sz1 = (LPCWSTR)str3;
LPCWSTR sz2 = (LPCWSTR)str4;
LPCWSTR sz3 = (LPCWSTR)str5;
CFileDialog Open(TRUE,sext,
NULL, OFN_HIDEREADONLY,
sfiltr);
Open.m_ofn.lpstrTitle=sz;
int ret=Open.DoModal();
CString bmpPath;
if(ret==IDOK)
bmpPath=Open.GetPathName( );
else
{
AfxMessageBox(sz1);
//return TRUE;
}
CFile file;
if(!file.Open(bmpPath,CFile::modeRead|CFile::shareDenyWrite))
{
AfxMessageBox(sz2);
//return FALSE;
}
BITMAPFILEHEADER *lpbmpfilehead=(BITMAPFILEHEADER*)(new char[14]);//1
DWORD size;
size=file.GetLength();
file.Read(LPSTR(lpbmpfilehead),14);
if(lpbmpfilehead->bfType!=0x4d42)
{
AfxMessageBox(sz3);
//return TRUE;
}
BITMAPINFOHEADER *lpbmpinfohead=(BITMAPINFOHEADER*)(new char[40]);//2
bmpfilesize=lpbmpfilehead->bfSize-lpbmpfilehead->bfOffBits;//象素所占空间
UpdateMemSize(bmpfilesize+40+256*4);
file.Read(LPSTR(lpbmpinfohead),40);
CopyMemory(lpDIB,lpbmpinfohead,40);
//lpbmpinfohead可以用来对位图的信息作初步的判断
delete []lpbmpfilehead;//1
delete []lpbmpinfohead;//2
file.Read(lpDIB+40,size-54);
file.Close();
drawbmp=TRUE;//唯一用来确定载入哪种格式位图,bmp or Jpeg or other?
LoadBmp=TRUE;//view类中位图内存区域只是在doc类打开open菜单时才从doc类读入数据
UpdateAllViews(NULL);
LoadBmp=FALSE;
// return TRUE;
}
{
// TODO: 在此添加命令处理程序代码
CString str = _T("BMP");
CString str1 = _T("Image files (*.BMP)|*.BMP||");
CString str2 = _T("位图打开");
CString str3 = _T("取消读入位图");
CString str4 = _T("读入位图失败");
CString str5 = _T("不是位图格式文件");
LPCWSTR sext = (LPCWSTR)str;
LPCWSTR sfiltr = (LPCWSTR)str1;
LPCWSTR sz = (LPCWSTR)str2;
LPCWSTR sz1 = (LPCWSTR)str3;
LPCWSTR sz2 = (LPCWSTR)str4;
LPCWSTR sz3 = (LPCWSTR)str5;
CFileDialog Open(TRUE,sext,
NULL, OFN_HIDEREADONLY,
sfiltr);
Open.m_ofn.lpstrTitle=sz;
int ret=Open.DoModal();
CString bmpPath;
if(ret==IDOK)
bmpPath=Open.GetPathName( );
else
{
AfxMessageBox(sz1);
//return TRUE;
}
CFile file;
if(!file.Open(bmpPath,CFile::modeRead|CFile::shareDenyWrite))
{
AfxMessageBox(sz2);
//return FALSE;
}
BITMAPFILEHEADER *lpbmpfilehead=(BITMAPFILEHEADER*)(new char[14]);//1
DWORD size;
size=file.GetLength();
file.Read(LPSTR(lpbmpfilehead),14);
if(lpbmpfilehead->bfType!=0x4d42)
{
AfxMessageBox(sz3);
//return TRUE;
}
BITMAPINFOHEADER *lpbmpinfohead=(BITMAPINFOHEADER*)(new char[40]);//2
bmpfilesize=lpbmpfilehead->bfSize-lpbmpfilehead->bfOffBits;//象素所占空间
UpdateMemSize(bmpfilesize+40+256*4);
file.Read(LPSTR(lpbmpinfohead),40);
CopyMemory(lpDIB,lpbmpinfohead,40);
//lpbmpinfohead可以用来对位图的信息作初步的判断
delete []lpbmpfilehead;//1
delete []lpbmpinfohead;//2
file.Read(lpDIB+40,size-54);
file.Close();
drawbmp=TRUE;//唯一用来确定载入哪种格式位图,bmp or Jpeg or other?
LoadBmp=TRUE;//view类中位图内存区域只是在doc类打开open菜单时才从doc类读入数据
UpdateAllViews(NULL);
LoadBmp=FALSE;
// return TRUE;
}
相关文章推荐
- 写一些心得体会2007.1
- 关于架构的一些心得体会
- 选购国外虚拟主机的一些心得体会
- 关于java空指针一些心得体会
- 对Fedora9的一些心得体会(另附一些开端设置)
- PHPCMS V9使用中的一些心得体会
- mysql主从复制的一些心得体会
- 关于对vuex使用过程中的一些心得体会
- 自学java中的一些心得体会
- 第一个php网站的一些心得和体会
- 自己最近的一些小体会和心得
- 编程的一些心得体会
- 《.NET大局观》的一些阅读感悟与心得体会
- 关于团队管理的一些心得体会
- 解决Elasticsearch问题的一些心得体会
- 关于水题hdu-2008的一些心得体会。。
- Unity3d的GameObject.Find()的一些使用心得体会
- 关于学习linux的一些心得体会
- VC++一些开发心得与调试技巧
- 干货总结中,稍候分享一些自己的心得体会。