2016-08-22 76 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並更新子窗口。窗口邊框按預期繪製。