1

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

4

1 回答 1

4

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

结果就是你所看到的。如果没有覆盖背景的能力,编辑控件会显示工件......

这种在标准控件中绘制透明的“技巧”并不是一个真正的好方法,但它遍布整个 Internet,因此每个人都在使用它而不知道它的缺点。通常这只适用于不改变的静态控件。

于 2015-06-18T06:46:33.430 回答