调试窗口Delphi中的消息处理

时间:2013-11-04 10:05:47

标签: delphi windows-messages

我有一个应用程序在它的主窗体上处理CM_DIALOGKEY消息。

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

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

1 个答案:

答案 0 :(得分:1)

  

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

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

  1. 使用版本控制系统隔离更改行为的提交。
  2. 使用按预期工作的最后一次提交,在CMDialogKey
  3. 中设置断点
  4. 运行程序,直到断点触发并在此状态下复制调用堆栈。
  5. 切换到第一个不起作用的提交。现在在步骤3的调用堆栈中设置一个断点,它会触发。您可能需要稍微工作才能找到这样的地方,并且您可能需要使用条件断点。例如,您可能需要条件Message.Msg=CM_DIALOGKEY
  6. 现在继续前进,找到执行与步骤3中看到的调用堆栈不同的点。
  7. 此时你应该已经隔离了行为改变,并且能够调查解决方案。