1

Windows でリッチ エディット コントロールを使用しています。SS_OWNERDRAWN値を呼び出しに渡そうとしCreateWindowExましたが、効果がないようです。所有者が描画できるように、リッチ エディット コントロールが何も描画しないようにするにはどうすればよいですか?

WM_PAINTまた、他のすべてのメッセージを単純に無視して転送するウィンドウ サブクラスを設定しようとしました。これはシステム全体に非常に厄介な影響を及ぼし、アプリケーションが停止する原因にもなりました。

編集: どうやら、0 を返して何もペイントしない場合でも、システムは WM_PAINT への応答として BeginPaint と EndPaint を期待しているようです。システムが停止したり、アプリが停止したりすることはなくなりました。リッチ エディットは確かに何も描画していませんが、その領域で Direct3D9 テキストをレンダリングすることはできません。:(

編集:実際には、によって返された DC の所有権を持っていないことが判明しましたID3DXFont::GetDC()。ドキュメントは不明ですが、問題は解決しました。

4

1 に答える 1

0

RichEdit コントロールは、オーナー描画ウィンドウ スタイルをサポートしていないため、SS_OWNERDRAWNまたは同様のものを使用することはできません。

についてはWM_PAINT、描画メッセージを単純に無視するだけでは、このような劇的な副作用は発生しないはずです。

于 2012-11-19T22:53:49.387 に答える