我的程序左边是一个 CFormView,放有个CTreeCtrl,右边是一个CFormView,他包含有个CFrameWnd,而CFrameWnd里面又放有一个CListCtrl,我想点击CTreeCtrl的结点时往CListCtrl插入一些Item。我是这么实现的:
void CLeftPaneView::OnSelchangedTree(NMHDR* pNMHDR, LRESULT* pResult) 
{ m_pRightPaneFrame->ShowFaxList("vv"); *pResult = 0;
}void CRightPaneFrame::ShowFaxList(CString mbId)
{
m_pListCtrlView->ShowFaxList(mbId);
}void CListCtrlView::ShowFaxList(CString mbId)
{
m_listCtrl.SetRedraw(FALSE);
CString strText;
int nColumnCount = m_listCtrl.GetHeaderCtrl()->GetItemCount();
// Insert 10 items in the list view control.
for (int i=0;i < 10;i++)
{
   strText.Format(TEXT("item %d"), i);    // Insert the item, select every other item.
   m_listCtrl.InsertItem(
  LVIF_TEXT|LVIF_STATE, i, strText, 
  (i%2)==0 ? LVIS_SELECTED : 0, LVIS_SELECTED,
  0, 0);    // Initialize the text of the subitems.
   for (int k=1;k < nColumnCount;k++)
   {
  strText.Format(TEXT("sub-item %d %d"), i, k);
  m_listCtrl.SetItemText(i, k, strText);
   }
}
         m_listCtrl.SetRedraw(TRUE);         AfxMessageBox( m_listCtrl.GetItemText(1, 1));
}执行的结果是AfxMessageBox( m_listCtrl.GetItemText(1, 1));能打印出相应的值,但是在窗体上就是看不到那些值。这是为什么呢?如果把该方法放到OnInitialUpdate() 里就能正常。
void CListCtrlView::OnInitialUpdate() 
{
CFormView::OnInitialUpdate(); //嗯。放在这里是管用的。
//ShowFaxList(""); //高亮显示一行的所有列
ListView_SetExtendedListViewStyle(m_listCtrl.m_hWnd, LVS_EX_FULLROWSELECT);
}