0

我正在使用 MFC 编写 Windows 程序。我在创建项目时使用了这些设置。
文件 -> 新建项目 -> MFC 应用程序
,在 MFC 应用程序向导中我选择了:
应用程序类型:基于对话框
资源语言:英语(美国)
使用 Unicode 库
项目风格:MFC 标准
使用 MFC:在静态库中使用 MFC
主框架样式:粗框,系统菜单和关于框打勾
高级功能:ActiveX控件,通用控件清单和支持重启管理器打勾
对话框标题:P2
生成的类:Cp2App和Cp2Dlg
我还没有在项目中添加任何代码. 我刚刚在表单中添加了控件:

在此处输入图像描述
但是当我尝试运行该项目时,我得到了错误:
1-error LNK2001: unresolved external symbol "public: void __thiscall CP2Dlg::OnBnClickedButton2(void)" (?OnBnClickedButton2@CP2Dlg@@QAEXXZ)
2-error LNK1120: 1未解决的外部问题
我知道我可以开始一个新项目来避免错误。但我想知道是什么原因导致这个问题并解决它?

注意:第一个错误出现在 P2Dlg.obj 中,第二个出现在 P2.exe 文件中。

编辑部分:实际上我认为这个错误是因为我不小心双击了Button2并创建了事件处理程序BnClickedButton2并将其删除。现在我尝试再次创建此事件处理程序,但我不能,因为当我右键单击 button2 并在事件处理程序向导中选择添加事件处理程序时,该选项BN_CLICKED处于非活动状态。
我想知道如何解决这种问题。请帮帮我?

编辑的第 2 节:我在 P2.cpp 文件中添加了这个函数,Add EventHandler但这并没有解决问题:

void CP2App::OnBnClickedButton2()
{
    // TODO: Add your control notification handler code here
}  

应该添加该功能CP2Dlg::OnBnClickedButton2,但我无法添加它。不活动了??????

4

1 回答 1

0

对话框的消息映射中有一行试图调用您删除的函数。将来如果您删除消息处理函数,也会删除消息映射中的相应条目。

消息处理程序必须在对话框类中。(这是发送消息的地方。)清理消息映射和功能并重建所有内容。然后您可能可以让“添加事件”向导再次工作。

于 2013-07-18T21:46:41.917 回答