见鬼的CListCtrl问题(插入了Item,用代码能够访问,但就是看不见 )
我的程序左边是一个 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);
}