C / C ++ / C #: как заставить перерисовать оконный хром на windows 7? - PullRequest
3 голосов
/ 20 августа 2010

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

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

Ответы [ 2 ]

3 голосов
/ 25 августа 2010

Согласно MSDN , кажется, что

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

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

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

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

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

...