可是我就是用OnDraw()
来填充FlexGrid的啊:
CXXXView::OnDraw()
{
CString strFilter;
CRect rect;
long i;
long lWidth;
int iRecordNums;
int iCurRow;
CString strCell;

iCurRow = 1;
GetClientRect(&rect);
lWidth = rect.Width();
for ( i = 0; i < 5; i++ )
{
m_FlexGrid.SetColWidth(i, lWidth * 2.97);
}
if ( m_pSet->IsEOF() )
m_FlexGrid.SetRows(1);
else 
{
if ( !m_pSet->IsEOF())
{
m_pSet->MoveNext();
}
iRecordNums = m_pSet->GetRecordCount();
m_FlexGrid.SetRows(iRecordNums + 1);
m_pSet->MoveFirst();
while ( iCurRow < iRecordNums + 1 )
{
m_FlexGrid.SetRow(iCurRow);
m_FlexGrid.SetCol(0);
m_FlexGrid.SetText(m_pSet->m_strName);
m_FlexGrid.SetCol(1);
strCell.Format("%d", m_pSet->m_lCode);
m_FlexGrid.SetText(strCell);
m_FlexGrid.SetCol(2);
strCell.Format("%d", m_pSet->m_lDays);
m_FlexGrid.SetText(strCell);
m_FlexGrid.SetCol(3);
strCell.Format("%d", m_pSet->m_lNumber);
m_FlexGrid.SetText(strCell);
m_FlexGrid.SetCol(4);
m_FlexGrid.SetText(m_pSet->m_strLevel); iCurRow += 1;
m_pSet->MoveNext();
}
}
m_FlexGrid.MoveWindow(&rect);
m_FlexGrid.RedrawWindow(&rect);
}

解决方案 »

  1.   

    OnDraw的开头将记录集移到开头去就行了
      

  2.   

    不过我发现视图切换回来时OnDraw()没有调用,是否这个原因?
      

  3.   

    OnPaint 
    OnUpdate
    上面应有个好使的,OnDraw没调用是常有的,经常被调用 的是OnPaint,而
    Invalid等方式是后应UpdateWindow(TRUE)一下,别一个常被调用 的是
    OnUpdate(..),建议不行的话放在这个函数中。
      

  4.   

    呵,sinfee(口是心非)果然有魅力……PF,下周结帐,3Q!
      

  5.   

    呵呵,Ashura(阿修罗) 老兄很是慷慨,小弟先谢谢了,互相帮助是应该的,共同进步!