MFC数据交换验证

时间:2011-11-22 16:08:08

标签: c++ mfc

我们正在使用MFC数据交换来验证一些数据,我们遇到了一些问题。我们正在使用DDV_MinMaxFloat调用来确保应用程序各个部分中的编辑框包含指定范围内的浮点数。如果输入的值超出范围,则使用此验证时,会自动向用户显示一个对话框,指示该值必须位于指定的范围内。这在调试中运行应用程序时工作正常但是在构建版本时我们遇到了问题。验证仍在发布模式下执行,但显示给用户的消息框为空白。

我尝试过通常的强制重建,删除旧资源文件和删除预编译的头文件,但这仍然在发布模式下发生。有没有人遇到过这个?有什么明显的东西需要寻找吗?

我还应该补充说,这个应用已经超过10年了,所以显然以前一直在正常工作。在过去的几周里,某种程度上出现了问题导致这种情况。

3 个答案:

答案 0 :(得分:1)

这些消息将来自MFC的资源字符串。您自己的资源可能存在一些冲突。检查以确保您的资源符合Microsoft的准则TN020: ID Naming and Numbering Conventions

特别注意这一点:

  

MFC的内部框架实现保留两个范围:0x7000   通过0x7FFF和0xE000到0xEFFF。

答案 1 :(得分:0)

  

在过去的几周里出现了一些错误导致这种情况。

由于您的应用程序在几周前工作正常,因此应该很容易:从版本控制系统中查看最后一个工作版本并将其与当前版本进行比较。或者尝试将其缩小到第一个不再适用的修订版。

答案 2 :(得分:0)

检查Spy ++是否有显示的消息框上的控件,以及它们上的文本是否为空白,或者根本没有控件。如果文本为空,则必须检查资源或消息框的调用/创建方式。否则,可能是资源设置不正确以及假设它可以从:: AfxGetResourceHandle()读取其资源字符串的消息。请注意,这是一个非常容易犯的错误 - 它是一个可以在任何地方更改的全局句柄(包括您无法控制的dll),因此乍一看似乎无关的代码的远程部分的更改可能会触发它。 / p>