在Dialog中用CListBox要注意啦

本文介绍了在MFC中正确初始化对话框及其中的CListBox控件的方法。通过将控件的初始化操作放置在OnInitDialog()函数中,可以避免构造函数阶段因窗口尚未创建而引发的问题。

MSDN是非常重要的,不过因为自己很懒,经常直接到网上找代码,所以没养成这个好习惯,这个程序是在一个Dialog中放了一个CListBox控件,我在Dialog的构造函数中进行了如下操作,m_nListBox.AddString(str),当然啦,得先将Listm_nListBox绑定起来,m_nListBoxCListBox类型的,结果就一直报错,可能因为我是直接学习MFC又没怎么学好,在公司断网的情况下,就不知道怎么办了,问了我身边的高人,人家查了查MSDN直接告诉我,应该把这个处理放到OnInitDialog()中,为什么呢,我厚着脸皮不愿意看MSDN,嗯,高人很耐心的讲解了一番,事实上,当Dialog进行构造的时候,只是initialize variables,并没有实际的窗体和ListBox产生的

  1. construction
  2. create
  3. show

DoModal实际上把23和在一起了

Create实际上是窗体的注册啊,产生啊什么的

OnInitDialog is called after all the dialog controls are created and just before the dialog box is displayed

所以应该m_nListBox.AddString(str)放在OnInitDialog()中了,那么就重载一下OnInitDialog()就可以啦

但是一定要注意了,在override 虚函数OnInitDialog()时一定不能忘记CDialog::OnInitDialog();,调用父类的OnInitDialog()

 

下面这个MSDN里面的图也很能说明问题啊

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值