01.
f.SeekToBegin();
02.
dwPos = f.GetPosition();
03.
04.
while
(dwPos < dwLen)
05.
{
06.
nRead = f.Read((
void
*)&RecNo, 2);
07.
switch
(RecNo)
08.
{
09.
case
XL_BOF:
10.
{
11.
f.Read((
void
*)&RecLen, 2);
12.
AfxMessageBox(
"Bof"
);
13.
}
14.
break
;
15.
case
XL_BOUNDSHEET:
16.
{
17.
DWORD
temp;
18.
BYTE
visi;
19.
BYTE
type;
20.
TCHAR
name;
21.
22.
f.Read((
void
*)&RecLen, 2);
23.
f.Read((
void
*)&temp, 4);
24.
f.Read((
void
*)&visi, 1);
25.
f.Read((
void
*)&type, 1);
26.
f.Read((
void
*)&StrLen, 2);
27.
f.Read((
void
*)&name, StrLen);
28.
29.
char
buf[128];
30.
memset
(buf, 0x0, 128);
31.
strncpy
(buf, &name, StrLen);
32.
33.
AfxMessageBox(buf);
34.
}
35.
break
;
36.
case
XL_DIMENSION:
37.
f.Read((
void
*)&RecLen, 2);
38.
f.Seek(RecLen, CFile::current);
39.
AfxMessageBox(
"Dimension"
);
40.
break
;
41.
case
0xE2:
42.
f.Read((
void
*)&RecLen, 2);
43.
AfxMessageBox(
"e2"
);
44.
break
;
45.
case
XL_SST:
46.
f.Read((
void
*)&RecLen, 2);
47.
f.Seek(RecLen, CFile::current);
48.
AfxMessageBox(
"SST"
);
49.
break
;
50.
case
XL_NUMBER:
51.
f.Read((
void
*)&RecLen, 2);
52.
AfxMessageBox(
"Number"
);
53.
break
;
54.
case
XL_STRING:
55.
f.Read((
void
*)&RecLen, 2);
56.
AfxMessageBox(
"String"
);
57.
break
;
58.
case
XL_RK:
59.
f.Read((
void
*)&RecLen, 2);
60.
AfxMessageBox(
"RK"
);
61.
break
;
62.
case
XL_LABEL:
63.
{
64.
f.Read((
void
*)&RecLen, 2);
65.
AfxMessageBox(
"Label"
);
66.
}
67.
break
;
68.
case
0xD6:
69.
f.Read((
void
*)&RecLen, 2);
70.
AfxMessageBox(
"RString"
);
71.
break
;
72.
case
XL_EOF:
73.
dwPos = dwLen;
74.
AfxMessageBox(
"Eof"
);
75.
break
;
76.
default
:
77.
nRead = f.Read((
void
*)&RecLen, 2);
78.
if
(nRead == 0)
79.
dwPos = dwLen;
80.
break
;
81.
}
82.
}