VS 2008,MFC:如何添加OnInitDialog?

21

这是我在VC6之外的第一个MFC应用程序,感觉有点愚蠢:

如何添加OnInitDialog处理程序? (我知道如何手动添加,但从长远来看这很麻烦)。

双击对话框-无效。 右键单击对话框-“添加事件处理程序”被禁用。 属性-消息具有“正常”消息,但没有WM_INITDIALOG。 属性-事件仅包含来自包含的控件的通知。 在类视图中右键单击-“添加...”仅具有函数和变量。

挠头

[编辑] 哦-这是MFC中的虚函数,但是...

3个回答

37

不要感到愚蠢,当我从VC6迁移到VS2008时,我花了很长时间才弄清楚这个问题!

无论如何,以下是添加对话框并重写OnInitDialog方法的完整步骤,也是为了我自己方便参考:

  1. 选择 资源视图 并展开 .rc 文件。
  2. 右键单击树视图中的 Dialog 条目,然后选择 插入对话框
  3. 选择 属性 窗口。(注意:如果您没有看到此窗口,请选择 视图 > 其他窗口 > 属性窗口 菜单项。)
  4. 属性 窗口中设置对话框的ID,例如 IDD_MYDIALOG
  5. 在资源编辑器中右键单击对话框,然后选择 添加类。 注意:如果您安装了IE8,可能会出现Internet Explorer脚本错误。 有关如何更正此错误的详细信息,请参见此博客文章
  6. MFC类向导 对话框中,输入类名(例如CMyDialog),将其选择为基类,然后按下完成按钮。 这将创建名为 MyDialog.cppMyDialog.h 的文件并将它们添加到您的项目中。

要重写 CMyDialog 类中的 OnInitDialog 方法:

  1. 打开文件 MyDialog.h
  2. 选择 属性 窗口。
  • 将光标放在读取class CMyDialog : public CDialog的行上。(属性窗口的顶部应显示CMyDialogVCCodeClass——这很重要,因为属性窗口高度依赖于上下文,根据编辑器中光标位置而有不同选项。)
  • 属性窗口中点击Overrides图标。
  • 在属性窗口中向下滚动以查找OnInitDialog
  • 单击此条目旁边的向下箭头,并选择<Add> OnInitDialog。 这将创建CMyDialog::OnInitDialog函数。
  • 希望这可以帮到您!


    我只是想提一下,当我从VC6迁移到VS2008后,这个问题困扰了我很长时间。对此可能需要一些适应过程。 - adzm
    找到了!:-D知道自己不是孤单一人总是有帮助的。 - peterchen
    在第5步,“添加类”被禁用了!! - user2568374

    4

    看起来你甚至不需要打开头文件并在其中乱动光标... 创建类之后,在ClassView窗格中选择该类,然后可以像上面描述的那样在Property窗格中更改重写/消息/事件。


    1
    因为不需要打开头文件并在正确的代码行上移动光标以使属性窗格正确显示。 - wayne

    1
    打开类向导,然后转到虚函数选项卡。双击要重写的函数即可。

    网页内容由stack overflow 提供, 点击上面的
    可以查看英文原文,
    原文链接