C/C++/C#: как заставить перерисовать оконный хром на windows 7?

Мое приложение имеет стандартное окно верхнего уровня для приложения. Мне нужно принудительно перекрасить оконный хром (иначе известный как не-клиентская область окна). Мне все равно, если клиентская область также перекрашивается или нет, но сам хром должен быть перерисован.

В частности, мне нужно, чтобы это работало в Windows 7. В моем конкретном случае не имеет значения, работает ли оно в других версиях ОС. Решением может быть C, C++, C# или любой другой язык.

2 ответа

Решение

По данным MSDN, похоже, что

RedrawWindow( hWnd, NULL, NULL, RDW_INVALIDATE | RDW_FRAME );

это то, что вы ищете.

RDW_FRAME заставляет любую часть неклиентской области окна, которая пересекает область обновления, получать сообщение WM_NCPAINT. Флаг RDW_INVALIDATE также должен быть указан; в противном случае RDW_FRAME не имеет никакого эффекта. Сообщение WM_NCPAINT обычно не отправляется во время выполнения RedrawWindow, если не указано либо RDW_UPDATENOW, либо RDW_ERASENOW.

Может быть, вы могли бы отправить сообщение WM_NCPAINT в окно

http://msdn.microsoft.com/en-us/library/dd145212%28VS.85%29.aspx

Другие вопросы по тегам