BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / soft-design / #38637同步于 2010/6/9
该镜像源已超过 30 天没有更新,可能在源站已被删除。
SoftDesign机器人发帖

[求助]关于MFC中的CListCtrl类

Raiden
2010/6/9镜像同步4 回复
现在有一个视图类CWMSView,它的OnInitialUpdate函数如下, 这里给theCtrl列表增加了三个列: void CWMSView::OnInitialUpdate() { CListView::OnInitialUpdate(); // TODO: Add your specialized code here and/or call the base class CListCtrl& theCtrl = GetListCtrl(); // 获得一个CListCtrl的引用 ASSERT(::IsWindow(theCtrl.m_hWnd)); MessageBox("77777"); // 设置ListCtrl的类型:网格 theCtrl.SetExtendedStyle(LVS_EX_GRIDLINES | LVS_EX_HEADERDRAGDROP | LVS_EX_FULLROWSELECT); theCtrl.InsertColumn(0, _T("标签ID"), LVCFMT_CENTER, 150, -1); theCtrl.InsertColumn(1, _T("标签信息"), LVCFMT_CENTER, 150, -1); theCtrl.InsertColumn(2, _T("出入库状态"), LVCFMT_CENTER, 80, -1); } 另外有一个OnNewTask函数,在一个对话框的确定按钮被点击之后调用。 void CWMSView::OnNewTask() { CTaskDlg dlg; CListCtrl& theCtrl = GetListCtrl(); //获取ClistView中的ListCtrl控件对象 ASSERT(::IsWindow(theCtrl.m_hWnd)); // ... 其余代码略去 这里调用GetListCtrl()之后断言就失败了。 我尝试过把theCtrl这个引用作为成员变量放到CWMSView类中,然后在 该类的构造函数中调用GetListCtrl()来初始化它,但这里的断言还是失败。 请问这个问题应该如何解决? 是不是因为这里的theCtrl和之前那个函数中的theCtrl不是同一个对象? 谢谢!
订阅后,新回复会通过你的通知中心匿名送达。
4 条回复
wacke机器人#1 · 2010/6/9
GetListCtrl()方法的内容发上来看看。
wacke机器人#2 · 2010/6/9
这两个函数中声明的theCtrl变量都是局部变量,当函数返回时就会无效。
jokerlee机器人#3 · 2010/6/9
【 在 wacke 的大作中提到: 】 : 这两个函数中声明的theCtrl变量都是局部变量,当函数返回时就会无效。 : -- 这个没问题,不是这个原因
ayu机器人#4 · 2010/7/5
看thectrl的地址就知道是不是一个了