0

我有一个应用程序可以处理其主窗体上的 CM_DIALOGKEY 消息。

procedure CMDialogKey(var Message: TCMDialogKey); message CM_DIALOGKEY;

这一直持续到最近的某个时候,但我不知道什么时候发生了变化,更重要的是什么。如果我创建一个空白应用程序,放入上面的消息处理程序,然后处理消息,我可以在某些击键上执行操作。沿着这条线的某个地方必须添加一些代码来处理消息并且不传播该消息,但是对于我的生活,我无法弄清楚是什么。关于如何进行调试的任何想法?断点显然是不可能的,除非有人知道某个特定的断点。

4

1 回答 1

1

关于如何进行调试的任何想法?

以下是我将如何进行调试:

  1. 使用您的版本控制系统来隔离改变行为的提交。
  2. 使用按预期工作的最后一次提交,在CMDialogKey.
  3. 运行程序直到断点触发,并在此状态下制作调用堆栈的副本。
  4. 切换到第一个不起作用的提交。现在在第 3 步的调用堆栈上方设置一个断点,该断点确实会触发。您可能需要做一些工作才能找到这样的位置,并且您可能需要使用条件断点。例如,您可能需要条件Message.Msg=CM_DIALOGKEY
  5. 现在向前一步,找到执行与步骤 3 中看到的调用堆栈不同的点。

此时,您应该已经隔离了行为变化并能够调查解决方案。

于 2013-11-05T09:09:45.587 回答