Winapi 如何使用所有者绘制的富编辑控件

Winapi 如何使用所有者绘制的富编辑控件,winapi,Winapi,我在Windows上使用了丰富的编辑控件。我尝试将值SS_OWNERDRAWN传递给CreateWindowEx调用,但似乎没有效果。如何防止rich edit控件绘制任何内容,以便我可以绘制它 我还试图设置一个window子类,它忽略WM_PAINT,但转发所有其他消息。这对我的整个系统产生了极其恶劣的影响,也导致我的应用程序停止 编辑:很明显,系统仍然期望BeginPaint和EndPaint响应WM_PAINT,即使您返回0并且不绘制任何内容。我的系统不再死机,我的应用程序也不再停止,丰富

我在Windows上使用了丰富的编辑控件。我尝试将值SS_OWNERDRAWN传递给CreateWindowEx调用,但似乎没有效果。如何防止rich edit控件绘制任何内容,以便我可以绘制它

我还试图设置一个window子类,它忽略WM_PAINT,但转发所有其他消息。这对我的整个系统产生了极其恶劣的影响,也导致我的应用程序停止

编辑:很明显,系统仍然期望BeginPaint和EndPaint响应WM_PAINT,即使您返回0并且不绘制任何内容。我的系统不再死机,我的应用程序也不再停止,丰富的编辑肯定不再绘制任何内容,但我仍然无法在该区域渲染Direct3D9文本


编辑:事实上,您并不拥有ID3DXFont::GetDC返回的DC的所有权。文档不清楚,但问题已解决。

RichEdit控件不支持所有者绘图窗口样式,因此不能使用SS_OWNERDRAWN或类似样式


至于WM_PAINT,简单地忽略绘制消息不应该导致如此严重的副作用,因此您一定犯了其他错误。

显然,系统希望使用BeginPaint和EndPaint,即使您返回时表示您处理了消息,实际上没有绘制任何内容。一旦我这样做了,问题就有些解决了——RichEdit控件不再渲染,但它仍然会阻止该区域中的DirectX9文本渲染。