无法在visual studio 2010中添加事件处理程序(mfc项目)

时间:2010-09-14 12:51:13

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

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

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

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

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

关于我的项目的说明:

1)运行Windows XP SP3

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

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

4)项目包含FarPoint ActiveX控件

3 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

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

1)处理在类

中声明为public的消息的函数
afx_msg void OnBnClickedSaveTButton();

2)该功能的实施:

void CExampleDlg::OnBnClickedSaveTButton()
{
}

3)

之后的消息映射中的事件处理程序消息的连接
BEGIN_MESSAGE_MAP(CExampleDlg, CDialogEx)
// Other mappings here

ON_BN_CLICKED(IDC_SAVE_TO_DISK_RADIO, &CExampleDlg::OnBnClickedSaveTButton)

END_MESSAGE_MAP()

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

答案 2 :(得分:0)

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

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

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

IDE工具菜单 - >选项 - >文字编辑器 - > C / C ++ - >高级 - >重新扫描解决方案间隔= 0

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