见鬼的CListCtrl问题(插入了Item,用代码能够访问,但就是看不见 )

shixueli 2005-08-21 12:30:16
我的程序左边是一个 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);
}
...全文
151 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
nonocast 2005-08-21
  • 打赏
  • 举报
回复
刷新!
shixueli 2005-08-21
  • 打赏
  • 举报
回复
不是下拉框。 是CListCtrl。
难道大家都没有碰到过类似的问题?
suiyun 2005-08-21
  • 打赏
  • 举报
回复
ShowFaxList最后call 以下updatewindow
goodboyws 2005-08-21
  • 打赏
  • 举报
回复
CFormView,他包含有个CFrameWnd,而CFrameWnd里面又放有一个CListCtrl,我想点击CTreeCtrl的结点时往CListCtrl
CFormView为什么要包含一个CFrameWnd,CFormView直接包含CListCtrl不就可以了么
fxh010101 2005-08-21
  • 打赏
  • 举报
回复
把你的下拉框再上下拉大些

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧