该文件头为二进制,结构如下:
Position Field Value Type Byte Order
Byte 0 File Code 9994 Integer Big
Byte 4 Unused 0 Integer Big
Byte 8 Unused 0 Integer Big
Byte 12 Unused 0 Integer Big
Byte 16 Unused 0 Integer Big
Byte 20 Unused 0 Integer Big
Byte 24 File Length File Length Integer Big
Byte 28 Version 1000 Integer Little
Byte 32 Shape Type Shape Type Integer      Little
Byte 36 Bounding Box Xmin Double Little
Byte 44 Bounding Box Ymin Double Little
Byte 52  Bounding B ox Xmax Double Little
Byte 60 Bounding Box Ymax Double Little
Byte 68* Bounding Box Zmin Double Little
Byte 76* Bounding Box Zmax Double Little
Byte 84* Bounding Box Mmin Double Little
Byte 92* Bounding Box Mmax Double Little本人的代码如下:
void CShapeReaderDoc::OnFileOpen()
{
CString strOpenFileName;
static char szFilter[] = {"Shape文件(*.shp)|*.shp|索引文件(*.shx)|*.shx|dBASE文件(*.dbf)|*.dbf"};
CFileDialog dlgLoadFile(1,"载入Shape文件",NULL,NULL,szFilter); 
if(dlgLoadFile.DoModal()==IDOK)
{
CStdioFile file;
CFileException ex;
if (!file.Open(dlgLoadFile.GetPathName(), CFile::modeRead|CFile::shareDenyNone,&ex))
{
TCHAR szError[1024];
ex.GetErrorMessage(szError, 1024);
AfxMessageBox(szError);
return;
}
else
{
//想在此用afxmessagebox显示出读出来的信息,本人太愚钝,请大侠尽量详细!
}
}
}

解决方案 »

  1.   

    CStdioFile提供了ReadString的方法来读取
      

  2.   

    用API吧!
    CreateFile
    ReadFile
    WriteFile
    搞定!
      

  3.   

    定义一个结构体:(以下代码仅供参考)
    struct FILE_HEAD_T{
    DWORD dwFileCode;
    DWORD dwReserved[5];
    DWORD dwFileLength;
    DWORD dwVersion;
    double dblXMin;
    double dblYMin;
    double dblXMax;
    double dblYMax;
    double dblZMin;
    double dblZMax;
    double dblMMin;
    double dblMMax;
    }
    用这个结构体声明一个变量来读取文件头
    FILE_HEAD_T myFileHead;
    memset(&myFileHead,0,sizeof(FILE_HEAD_T));//清零
    CFile file;
    file.Open(...);
    file.Read(&myFileHead, sizeof(FILE_HEAD_T));//读取数据
    ...
    //之后看看这个结构体中的数据是否正确
    CString szText;
    szText.Format("File Version:%d", myFileHead.dwVersion);
    AfxMessageBox(szText);
    //可以将结构体中所有数据都依次显示,或者干脆再写一个文本文件
    ...
    file.Close();
      

  4.   

    在下非常感激LongLongAgoImBoy(ThereIsAMe) !