在类的定义的头文件中定义了:
BITMAPFILEHEADER m_Bitmapfileheader;
BITMAPINFOHEADER m_Bitmapinfoheader;
在成员函数定义文件使用时:
pFilebitmap.Read(&m_Bitmapfileheader,sizeof(BITMAPFILEHEADER));
pFilebitmap.Read(&m_Bitmapinfoheader,sizeof(BITMAPINFOHEADER));
却提示:标示符未定义 error C2065: 'm_Bitmapfileheader' : undeclared identifier
BITMAPFILEHEADER m_Bitmapfileheader;
BITMAPINFOHEADER m_Bitmapinfoheader;
在成员函数定义文件使用时:
pFilebitmap.Read(&m_Bitmapfileheader,sizeof(BITMAPFILEHEADER));
pFilebitmap.Read(&m_Bitmapinfoheader,sizeof(BITMAPINFOHEADER));
却提示:标示符未定义 error C2065: 'm_Bitmapfileheader' : undeclared identifier
// BitmapFile.h: interface for the CBitmapFile class.
//
//////////////////////////////////////////////////////////////////////#if !defined(AFX_BITMAPFILE_H__77AED4FD_4F50_4667_A51E_DE841376C4A9__INCLUDED_)
#define AFX_BITMAPFILE_H__77AED4FD_4F50_4667_A51E_DE841376C4A9__INCLUDED_#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#include "Windows.h"class CBitmapFile : public CObject
{
public:
CBitmapFile();
virtual ~CBitmapFile();
public:
void Read();
BOOL Isbmpfile();
long Width();
long Heigth();
int Needbit();
CPalette *Getpalette();
public:
COLORREF *m_Colorref;
// BITMAPFILEHEADER m_Bitmapfileheader;
// BITMAPINFOHEADER m_Bitmapinfoheader;
RGBQUAD pPalette;
BYTE *pMappixel;
int nCoutRgb;
};#endif // !defined(AFX_BITMAPFILE_H__77AED4FD_4F50_4667_A51E_DE841376C4A9__INCLUDED_)
pFilebitmap.Read(&m_Bitmapfileheader,sizeof(BITMAPFILEHEADER));
可以看出来你在该类的方法!但是Bitmapfileheader是BITMAPFILEHEADER 类型的你得把声明该类型的头文件加进来,应该是Windows.h
怎么会出现#include "windows.h"???
应该什么都没有,就算有,也是#include<windows.h>
cpp文件呢?
又没有#include"stdafx.h"
#include "bitmapfile.h"
顺便提一下,对搂主的命名方式有意见,建议每个单词开头大写。
#include "stdafx.h"
一定要在cpp文件中其他#include之前
头文件为:// BitmapFile.h: interface for the CBitmapFile class.
//
//////////////////////////////////////////////////////////////////////#if !defined(AFX_BITMAPFILE_H__77AED4FD_4F50_4667_A51E_DE841376C4A9__INCLUDED_)
#define AFX_BITMAPFILE_H__77AED4FD_4F50_4667_A51E_DE841376C4A9__INCLUDED_#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000class CBitmapFile : public CObject
{
public:
CBitmapFile();
virtual ~CBitmapFile();
//{{AFX_MSG(CBitmapFile)
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
public:
void Read();
BOOL Isbmpfile();
long Width();
long Heigth();
int Needbit();
CPalette *Getpalette();
public:
COLORREF *m_Colorref;
BITMAPFILEHEADER m_Bitmapfileheader;
BITMAPINFOHEADER m_Bitmapinfoheader;
RGBQUAD pPalette;
BYTE *pMappixel;
int nCoutRgb;
};
///////////////////////////////////////////////////////////////////////////////{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.
#endif // !defined(AFX_BITMAPFILE_H__77AED4FD_4F50_4667_A51E_DE841376C4A9__INCLUDED_).cpp文件为:
// BitmapFile.cpp: implementation of the CBitmapFile class.
//
//////////////////////////////////////////////////////////////////////#include "stdafx.h"
#include "Ex02.h"
#include "BitmapFile.h"
#include <Windows.h>#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
IMPLEMENT_DYNAMIC(CBitmapFile,CObject )
BEGIN_MESSAGE_MAP(CBitmapFile,CObject)
//{{AFX_MSG_MAP(CBitmapFile)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()BITMAPFILEHEADER m_Bitmapfileheader;
BITMAPINFOHEADER m_Bitmapinfoheader;
CBitmapFile::CBitmapFile()
{
}CBitmapFile::~CBitmapFile()
{
delete m_Colorref;
CObject::~CObject();
}
void Read()
{
CFile pFilebitmap;
LPSTR Lpszfilepath="c:\\bitmap.bmp";
try
{
LPSTR lpszerror;
if(!(pFilebitmap.Open(Lpszfilepath,CFile::modeRead,NULL)))
{
lpszerror="Open file failed!\n";
throw lpszerror;
}
}
catch(LPSTR lpszerror)
{
MessageBox(NULL,lpszerror,lpszerror,MB_OK);
}
try
{
pFilebitmap.Read(&m_Bitma pfileheader,sizeof(BITMAPFILEHEADER));
pFilebitmap.Read(&m_Bitmapinfoheader,sizeof(BITMAPINFOHEADER));
}
catch(CFileException* e)
{
if(e->m_cause==CFileException::accessDenied)
MessageBox(NULL,"Access denied !","Access denied!",MB_OK);
if(e->m_cause==CFileException::hardIO)
MessageBox(NULL,"There was a hardware error! !","hardIO",MB_OK);
}
if(m_Bitmapfileheader.bfType!=0x4d42)
AfxMessageBox("The File isnot type of bmp!",MB_OK,0);
CFileStatus status;
pFilebitmap.GetStatus(status);
if(m_Bitmapfileheader.bfSize!=status.m_size)
AfxMessageBox("The File is destoryed !",MB_OK,0);//......
}