1

我使用 Win32 C++ 创建了编辑框。我对它进行了子类化并覆盖了 OnPaint 方法,在其中我用一些背景颜色填充它。

现在,如果我输入一些文本,我将看不到任何文本,但我可以看到光标移动。

如果我不放任何背景颜色,我可以在编辑框中看到文本。

知道为什么我没有收到带有背景颜色的文本吗?

4

1 回答 1

2

您不应该为编辑控件处理 WM_PAINT。在这里,您只是尝试填充背景颜色,但在此过程中,您不允许原始编辑控制过程绘制内容,在这种情况下,它是您输入的文本。光标将可见,因为它是使用 ShowCaret 函数显示的。

所以如果你只想改变编辑控件的背景颜色,在父窗口中处理 WM_CTLCOLOREDIT 和 WM_CTLCOLORSTATIC 并返回画笔。参考http://msdn.microsoft.com/en-us/library/windows/desktop/bb761691%28v=vs.85%29.aspx

于 2012-07-20T06:58:58.167 回答