2016-08-22 42 views
0

如何将边框添加到嵌入的子窗口中(WS_CHILD | DS_CONTROL)风格被CFormView冲掉?MFC将细边框添加到WS_CHILD窗口

我试图通过选择Thin边框类型在对话框编辑器中添加边框,但它不起作用。

我也试过SetWindowLongModifyStyle。但结果是,添加了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

@IInspectable谢谢!我将我的代码更改为'ModifyStyle(0,WS_BORDER,SWP_DRAWFRAME)',它现在可以工作。 ('SetWindowPos'由'ModifyStyle'内部调用)。 –

+0

然后你应该把它写成答案。请参阅[我可以回答我自己的问题吗?](http://stackoverflow.com/help/self-answer)以防万一您想知道,如果这是好的。 – IInspectable

回答

0

由于@IInspectable指出,经过SWP_DRAWFRAMESetWindowPos改变窗口风格后需要。

我最终选择ModifyStyle添加WS_BORDERWS_CHILD窗口,并通过SWP_DRAWFRAME标志的第三个参数:m_wndMainPage.ModifyStyle(0, WS_BORDER, SWP_DRAWFRAME)。它内部调用SetWindowPos并更新子窗口。窗口边框按预期绘制。