Стереть фон окна win32API - PullRequest
       36

Стереть фон окна win32API

3 голосов
/ 07 марта 2011

Мои одноклассники начали использовать Delphi с pascal, но я как программист c ++ должен использовать win32 API.Они меняли цвет фона, поэтому я должен знать об этом, но есть некоторые различия.

В delphi каждая форма выглядит так, как будто у нее есть свой экземпляр, и установка цвета фона для одного окна - это просто вопрос изменениязначение.Не в случае с win32, когда при изменении этого значения оно влияет на каждое окно, использующее этот класс (после обновления ofc).

Что мне нужно сделать, это очистить / стереть фон моего окна.Я могу сделать это с помощью FillRect (..), и он работает очень хорошо, но я нашел также WM_ERASEBKGND , который, кажется, делает именно то, что мне нужно.Они упомянули, что, если это сообщение обработано, я должен вернуть ненулевое значение, но они не сказали, как его обработать.

Так может ли что-нибудь еще, кроме FillRect (и similliar), разрешить мне стереть окно с помощью определенной мной кисти, а не по умолчанию для класса?

Спасибо

Ответы [ 2 ]

11 голосов
/ 07 марта 2011

Вы обрабатываете WM_ERASEBKGND, просто стирая фон (с помощью FillRect() нормально).

Возвращая ненулевое значение, вы просто сообщаете Windows, что это сообщение было обработано, иникаких дальнейших действий не требуется.Нет ничего более формального, чем это.

1 голос
/ 07 марта 2011

Если вы используете MFC с C ++, вы также можете проверить реализацию CWnd :: OnEraseBkgnd в этой среде http://msdn.microsoft.com/en-us/library/a0a52fkz(v=vs.80).aspx

...