2016-08-22 3 views
0

Как добавить рамку к встроенному дочернему окну с (WS_CHILD | DS_CONTROL) стилем, который был закрыт CFormView?MFC Добавить тонкую границу в окно WS_CHILD

Я попытался добавить границу в Редактор диалога, выбрав Thin тип границы, но он не работает.

Я также пробовал SetWindowLong и ModifyStyle. Но в результате добавлен стиль WS_BORDER, но все равно нет границы.

Можно ли добавить границу к встроенному дочернему окну, выбрав стиль? или я должен сам это сделать?

Спасибо, Гуань

+1

Из [SetWindowLongPtr] (https://msdn.microsoft.com/en-us/library/windows/desktop/ms644898.aspx): * «Некоторые данные в окне кэшируются, поэтому изменения вы используете с помощью ** SetWindowLongPtr * * не вступает в силу до тех пор, пока вы не вызовете функцию [** SetWindowPos **] (https://msdn.microsoft.com/en-us/library/windows/desktop/ms633545.aspx). * Передача 'SWP_DRAWFRAME' в [SetWindowPos] (https://msdn.microsoft.com/en-us/library/windows/desktop/ms633545.aspx). – IInspectable

+0

@Инспективный Спасибо! Я меняю свой код на 'ModifyStyle (0, WS_BORDER, SWP_DRAWFRAME)', и теперь он работает. ('SetWindowPos' внутренне вызывается' ModifyStyle'). –

+0

Тогда вы должны написать это как ответ. См. [Могу ли я ответить на свой вопрос?] (Http://stackoverflow.com/help/self-answer) в случае, если вам интересно, если все в порядке. – IInspectable

ответ

0

Как @IInspectable указывает, проходя SWP_DRAWFRAME к SetWindowPos требуется после изменения стилей окна.

я, наконец, выбрать ModifyStyle добавить WS_BORDER к моему WS_CHILD окно и передать SWP_DRAWFRAME флаг третьего параметра: m_wndMainPage.ModifyStyle(0, WS_BORDER, SWP_DRAWFRAME). Он внутренне вызывает SetWindowPos и обновляет дочернее окно. Граница окна рисуется, как ожидалось.