MFC CEdit 字符删除不起作用

MFC CEdit character delete not working

我今天在我的一位客户的 Windows XP SP 3 上偶然发现了一个奇怪的问题:使用 BACKSPACEDELETE 按钮删除来自 CEdit 的文本工作。更准确地说,我将光标放在文本的末尾,然后点击 BACKSPACE 按钮将导致文本光标向左移动,但删除的字符不会消失。实际删除发生了,因为如果我强制刷新 window,删除的字符将丢失。 我猜是油漆问题,但我找不到问题所在以及如何解决它,而且我无法在其他地方重现该错误。 我检查了代码,CEdits 的行为没有覆盖任何事件,也没有设置特殊属性。

我的回答是猜测:您覆盖了 WM_CTLCOLOREDIT 并且返回了一个 NULL Brush 来绘制透明。

结果如你所见。没有覆盖背景的能力,编辑控件显示伪影...

这个"trick"在Standard控件中绘制透明图并不是一个真正的好东西,但是它在Internet上流传很广,所以每个人都在使用它而不知道它的缺点。通常这仅适用于不会更改的静态控件。