【问题标题】:Can't add event handler in visual studio 2010 (mfc project)无法在 Visual Studio 2010(mfc 项目)中添加事件处理程序
【发布时间】:2010-09-14 12:51:12
【问题描述】:

我最近将 MFC Visual Studio 6.0 项目转换为 Visual Studio 2010 项目,每当我尝试将事件处理程序添加到项目中某些窗体上的控件时都会遇到问题。在一个特定页面上,我有一个单选按钮,我尝试使用 3 种不同的方式向其添加单击事件处理程序:

1) 通过右键单击单选按钮并单击“添加事件处理程序”。此方法不会产生错误消息,但不会创建事件处理程序。它只是关闭了事件处理程序向导,没有任何类型的消息。

2) 通过右键单击单选按钮并单击属性。在属性窗口中,我单击事件窗口(闪电按钮)。然后我导航到点击事件并点击添加处理程序。此方法会生成一个错误消息窗口,显示“属性值无效”,下面框中的此错误消息的详细信息显示“灾难性故障”

3) 通过类向导添加事件处理程序。这会产生与上面数字 1 中描述的结果相同的结果。

关于我的项目的说明:

1) 运行 Windows XP SP3

2) 并非所有表格都有这个问题。在某些表单上,我可以很好地添加事件处理程序。

3) 每当我收到“属性值无效”错误消息时,这也会破坏撤消/重做功能

4) 项目包含 FarPoint ActiveX 控件

【问题讨论】:

  • 我建议将有问题的单个对话框的代码复制到同一解决方案中的新项目中。是否会发生同样的错误?
  • 我将给我带来问题的表单的资源文件和 .h 和 .cpp 文件复制到同一解决方案中的新项目中,但我得到了与上述相同的错误。一件有趣的事情是,如果我只复制对话框的资源文件并为其创建一个新的 .cpp 和 .h 文件,我可以很好地添加事件处理程序。
  • 由于几个不同的问题,我最终放弃了将这个 Visual Studio 6.0 项目升级到 2010 年。它非常接近工作,但我没有足够的时间来解决我的问题。我求助于在我的机器上安装了 Visual Studio 6.0 :*(。如果我弄清楚了,我会再次发布。

标签: visual-studio-2010 visual-c++ mfc


【解决方案1】:

检查是否已为有问题的表单添加了 MFC 类。对于父窗体没有关联类的控件,我已经让 VS2010“添加变量...”向导静默失败,因此事件处理程序可能也是如此。

【讨论】:

    【解决方案2】:

    我在一个项目中遇到过并且仍然遇到同样的问题。我将所有内容重命名为新名称。不确定这是否是导致问题的原因,但我无法修复它。尽管有正确的课程,但添加事件处理程序对我来说默默地失败了。我最终做的是复制所需的事件处理代码,这需要 3 部分:

    1) 处理类中声明为 public 的消息的函数

    afx_msg void OnBnClickedSaveTButton();
    

    2) 该功能的实现:

    void CExampleDlg::OnBnClickedSaveTButton()
    {
    }
    

    3) 事件处理程序消息在Message Map之后的连接

    BEGIN_MESSAGE_MAP(CExampleDlg, CDialogEx)
    // Other mappings here
    
    ON_BN_CLICKED(IDC_SAVE_TO_DISK_RADIO, &CExampleDlg::OnBnClickedSaveTButton)
    
    END_MESSAGE_MAP()
    

    您可以从对话框编辑器中获取 IDC 名称。所有这一切都像一个魅力,虽然它比添加事件处理程序向导需要更长的时间。

    【讨论】:

      【解决方案3】:

      那是因为智能感知或其数据库被禁用。我最近遇到了这个。 检查这些选项,应该是:

      IDE 工具菜单 -> 选项 -> 文本编辑器 -> C/C++ -> 高级 -> 禁用数据库 = False

      IDE 工具菜单 -> 选项 -> 文本编辑器 -> C/C++ -> 高级 -> 禁用 Intellisence = False

      IDE Tools menu -> Options -> Text Editor -> C/C++ -> Advanced -> Rescan Solution Interval = 0

      打开一个空的 VS IDE,修复选项,然后重新打开项目,一切都应该没问题。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-10-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多