3

私のクラスメートはパスカルでDelphiを使い始めましたが、C++のポーグラマーとして私はwin32APIを使用する必要があります。彼らは背景色を変えていたので、私もこれを知る必要がありますが、いくつかの違いがあります。

デルファイでは、各フォームに独自のインスタンスがあるように見えます。1つのウィンドウの背景色を設定するには、1つの値を変更するだけです。win32の場合はそうではなく、その値を変更すると、そのクラスを使用するすべてのウィンドウに影響します(ofcの更新後)。

私がする必要があるのは、ウィンドウの背景をクリア/消去することです。私はFillRect(..)でそれを行うことができ、それは非常にうまく機能していますが、私が必要としていることを正確に実行しているように見えるWM_ERASEBKGNDも見つけました。彼らは、このメッセージが処理された場合、ゼロ以外を返す必要があると述べましたが、処理方法を教えていませんでした。

それで、FillRect(および同様の)以外の何かで、クラスのデフォルトではなく、定義したブラシでウィンドウを消去できますか?

ありがとう

4

2 に答える 2

12

WM_ERASEBKGND背景を消去するだけで処理できます(使用してFillRect()も問題ありません)。

ゼロ以外の値を返すことにより、このメッセージが処理され、それ以上のアクションは不要であることをWindowsに通知するだけです。それ以上に正式なものはありません。

于 2011-03-06T22:40:42.653 に答える
1

C ++でMFCを使用している場合は、そのフレームワークのCWnd :: OnEraseBkgndhttp://msdn.microsoft.com/en-us/library/a0a52fkz(v=vs.80).aspxの実装を確認することもできます

于 2011-03-06T23:03:36.060 に答える