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