Delphi XE3中的非中断断点不断触发OnMouseMove事件

Delphi XE3中的非中断断点不断触发OnMouseMove事件,delphi,debugging,breakpoints,Delphi,Debugging,Breakpoints,我试图使用非中断断点在控件的OnMouseMove事件处理程序中记录一些值。我注意到,当鼠标在控件上空闲(不移动)时,断点不断被击中 经过一点调查,我得出结论,断点应该对这种行为负责。通过以下示例可以很容易地再现此问题。启用断点时,当鼠标悬停在窗体上时,计数器将不断递增。禁用断点时,仅当鼠标移到窗体上时,计数器才会增加 TForm1 = class(TForm) Edit1: TEdit; procedure FormMouseMove(Sender: TObject; Shift:

我试图使用非中断断点在控件的OnMouseMove事件处理程序中记录一些值。我注意到,当鼠标在控件上空闲(不移动)时,断点不断被击中

经过一点调查,我得出结论,断点应该对这种行为负责。通过以下示例可以很容易地再现此问题。启用断点时,当鼠标悬停在窗体上时,计数器将不断递增。禁用断点时,仅当鼠标移到窗体上时,计数器才会增加

TForm1 = class(TForm)
  Edit1: TEdit; 
  procedure FormMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
public
  FCounter: Integer;
end;

procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
begin
  Inc(FCounter);
  Edit1.Text := IntToStr(FCounter);
end;

我可以找到其他方法来记录我需要的信息,但是,我想知道有什么解决方法可以让我使用我原来的方法。

相关:感谢链接。如果我理解正确的话,情况就是这样:当遇到断点时,IDE临时成为活动窗口。当IDE完成其工作时,它会使我的应用程序成为活动窗口,从而产生虚假的WM_MOUSEMOVE消息,这样操作系统就可以完成它的工作(比如确保使用正确的指针)。不幸的是,这会创建一个无限循环,这意味着我必须使用一种不同的方法来记录日志。是的,我认为这正是正在发生的事情。