0

我在 Delphi 中编写了一个高级文本编辑器组件(固定宽度、语法突出显示等),使用 Windows API 结合 TCanvas 元素,它工作得很好,除了一件事:如果我将焦点设置到同样显示插入符号的应用程序,例如 TEdit,从我的编辑器组件中窃取焦点,未显示新编辑器的插入符号(例如 TEdit);相反,插入符号在我的编辑器组件中移动!例如,如果我在新编辑器 (TEdit) 中编写一个字符,它将按预期显示,并且插入符号将在我的组件中向右移动。什么会导致这种情况?我怀疑 Win API 对键盘焦点的处理和 VCL 处理之间存在一些冲突。在我的编辑器组件中,我使用 CreateCaret 来响应 WM_SETFOCUS,并使用 DestroyCaret 来响应 WM_KILLFOCUS。

4

2 回答 2

1

我在组件的代码中发现了一个小错误。我很抱歉。

于 2010-02-28T18:26:49.003 回答
0

我的第一个想法是您没有收到 WM_KILLFOCUS 消息。我会构建一个诊断来告诉你它是否正在发生。

倾向于对此类问题使用调试器,我发现在尝试诊断此类交互时,修改标题之类的操作效果更好。

于 2010-02-27T22:23:41.203 回答