CListCtrl GetItemCount() 断言错误

chenchenyangll 2011-07-03 06:38:47
我在一个FormView里,自己添加了CListCtrl* m_listCtrl

在OnInitialUpdate中初始化了它,并且添加了列、数据等等

然后在类的一个方法里想要从尾部添加进列表,所以需要调用GetItemCount()

但是他一直报断言错误,m_listCtrl不为空,断言是在::SendMessage(.......)报的

求高手救命啊!!!
...全文
361 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
chenchenyangll 2011-07-03
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 schlafenhamster 的回复:]

CWnd* GetDlgItem( int nID ) const;

void CWnd::GetDlgItem( int nID, HWND* phWnd ) const;

Return Value

A pointer to the given control or child window. If no control with the integer ID given b……
[/Quote]

赞 谢谢啦~
schlafenhamster 2011-07-03
  • 打赏
  • 举报
回复
CWnd* GetDlgItem( int nID ) const;

void CWnd::GetDlgItem( int nID, HWND* phWnd ) const;

Return Value

A pointer to the given control or child window. If no control with the integer ID given by the nID parameter exists, the value is NULL.

The returned pointer may be temporary and should not be stored for later use.

chenchenyangll 2011-07-03
  • 打赏
  • 举报
回复
囧。。

头文件: CListCtrl* m_listCtrl;
构造函数 :m_listCtrl(NULL);

OnInitialUpdate:
m_listCtrl = (CListCtrl*) GetDlgItem(IDC_LIST);
// do something

到此,显示正常

foo() {
//m_listCtrl = (CListCtrl*) GetDlgItem(IDC_LIST); 加上这句就OK
int index = m_listCtrl->GetItemCount(); // 不加上面这句就报错
}



快乐鹦鹉 2011-07-03
  • 打赏
  • 举报
回复
救不了你。不知道你这个控件怎么创建的,是局部变量还是成员变量,在另一个方法中代码是怎么写的。
不过根本的原因应该是你不知道类和实例之间的区别。
chenchenyangll 2011-07-03
  • 打赏
  • 举报
回复
我晕

为什么自定义的变量(不通过DDX),必须每个方法内都来一遍GetDlgItem ???

我在我的方法中最前面加入初始化的语句就行了。。。

为什么?!?!?! OnInitialUpdate不行吗? 非要DDX?

15,979

社区成员

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

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