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