以前在大学学过C++和VB,现在打算学一点VC++。用的参考书是《Inside Visual C++》,翻译特差劲,好像是用的翻译软件直接翻的,文字半通不通的……汗……
前几章都算过去了,到第7章编写非模式对话框程序时出问题了……把原文抄上来:
5、使用ClassWizard添加一个OnInitDialog消息处理函数。
正如在一会儿将看到的那样,ClassWizard生成初始对话框控件的代码。然而,这个DDX(对话框数据交换)代码将不初始化列表框选择,所以必须重载CDialog::OnInitDialog函数。尽管OnInitDialog是一个虚拟成员函数,但是如果在派生的对话框类中映射WM_INITDIALOG消息,那么ClassWizard就生成原型和框架。要做到这一点,在Object IDs列表框中单击OnInitDialog,然后在Message列表框中单击WM_INITDIALOG消息。在MFC ClassWizard对话框中单击Edit Code按钮来编辑OnInitDialog函数。键入如下所示黑体的代码,代替已有的代码:
BOOL CEx06aDialog::OnInitDialog()
{
CListBox* pLB=(CListBox*)GetDlgItem(IDC_DEPT);
pLB->InsertString(-1,"Documentation");
pLB->InsertString(-1,"Accouting");
pLB->InsertString(-1,"Human Relations");
pLB->InsertString(-1,"Security");
return CDialog::OnInitDialog()
}
问题是:我在Object IDs对话框中根本找不到OnInitDialog对象,当然在Message对话框里也没有WM_INITDIALOG消息可选!按我的理解,ClassWizard的工作对象是当前工作区的类也就是CEx06aDialog,而它的基类是CDialog,那么ClassWizard当然不会把基类的对象给列出来了!但要自己手工编写原型和消息处理的话,我又没这个本事……这几天为这个问题快抓狂了,希望高手指教我该如何处理!