我用list control 控件显示库文件,styles的view设置为report,align:top,
初始化我用BOOL CDBFDlg::OnInitDialog()
{
CDialog::OnInitDialog();
char *pStockCode = "股票代码";
char *pStockName = "股票名称";
char *pStockPrice = "成交金额";
char *pStockNum = "成交手数";
     …………………………
m_control.InsertColumn(0,pStockCode,LVCFMT_CENTER,70,1); 
m_control.InsertColumn(1,pStockName,LVCFMT_CENTER,90,1); 
m_control.InsertColumn(2,pStockPrice,LVCFMT_CENTER,100,1); 
m_control.InsertColumn(3,pStockNum,LVCFMT_CENTER,80,1); 
  ………………
}   //CListControl m_control 
在“begin”中我加入这样的代码~!
void CDBFDlg::OnBegin() 
{
S_SHOW128* pdsShow128 = NULL;
S_DBFHEAD dsHead;
CHAR* pBuf = NULL;
CHAR szTemp[64] = {0};
if(m_fileDBF.Open("C:\\dbf\\SHOW128.DBF",CFile::modeRead        |CFile::shareDenyNone | CFile::typeBinary))                
{
m_fileDBF.Seek( 0L, CFile::begin );
m_fileDBF.Read(&dsHead, sizeof(dsHead));
if(dsHead.ulRecordSum > 0L){
pBuf = new CHAR[sizeof(S_SHOW128) * dsHead.ulRecordSum];
if(pBuf != NULL){
m_fileDBF.Seek(dsHead.usHeadLen, CFile::begin);
m_fileDBF.ReadHuge(pBuf, 
sizeof(S_SHOW128) * dsHead.ulRecordSum);

pdsShow128 = (S_SHOW128*)pBuf;
for(ULONG i = 0; i < dsHead.ulRecordSum; i++){
m_control.InsertItem(i, NULL);

memset(szTemp, 0, sizeof(szTemp));
memcpy(szTemp, pdsShow128[i].S1, 
sizeof(pdsShow128[i].S1));
szTemp[sizeof(pdsShow128[i].S1)] = 0;
m_control.SetItemText(i, 0, szTemp);

memset(szTemp, 0, sizeof(szTemp));
memcpy(szTemp, pdsShow128[i].S2, 
sizeof(pdsShow128[i].S2));
m_control.SetItemText(i, 1, szTemp);

memset(szTemp, 0, sizeof(szTemp));
memcpy(szTemp, pdsShow128[i].S5, 
sizeof(pdsShow128[i].S5));
m_control.SetItemText(i, 2, szTemp);

memset(szTemp, 0, sizeof(szTemp));
memcpy(szTemp, pdsShow128[i].S11, 
sizeof(pdsShow128[i].S11));
m_control.SetItemText(i, 3, szTemp);
                                    ……………………………………………………
}

delete[] pBuf;
}
}
m_fileDBF.Close();
}



}  //  CFile  m_fileDBF 
当我打开.exe 的时候,“股票代码”"股票名称";"成交金额""成交手数"就已经显示了,
然后我按下“begin”按钮的时候,对应的数据就出现了,问题在于这里,当我再按下
“begin”按钮时候,重复的数据就出现,右边的滚动条变短,比如,本来只显示
一个股票代码“00001”现在变成了两个“00001”
我要解决的问题是,在按下第二次,三次……“begin”的时候,能清除以前的数据,这里还有一个完整的文件:
struct S_SHOW128{
char cDelFlag;
char S1[6];
char S2[8];
char S3[8];
char S4[8];
char S5[12];
char S6[8];
char S7[8];
char S8[8];
char S9[8];
char S10[8];
char S11[10];
char S13[8];
char S15[10];
char S16[8];
char S17[10];
char S18[8];
char S19[10];
char S21[10];
char S22[8];
char S23[10];
char S24[8];
char S25[10];
};struct S_DBFHEAD{
UCHAR ucVersion; //版本号
BYTE byYear;
BYTE byMonth;
BYTE byDay;
ULONG ulRecordSum; //文件中的记录总数4
USHORT usHeadLen; //文件头的长度2
USHORT usRecLen; //每条记录的长2度
CHAR cReservation[20]; //保留1
};
我们是做网上股票的,我们公司是做网络~!~   :)