2017-08-03 41 views
2

我有一個CPropertySheet。在CPropertySheet/CDialog上使用帶WS_THICKFRAME的ModifyStyle

當我使用

ModifyStyle(DS_MODALFRAME, WS_POPUP | WS_THICKFRAME | WS_MAXIMIZEBOX); 

的OnCreate處理中,一切都很好。創建的窗口按預期行爲並可調整大小。

當我使用相同的代碼時,稍後在CPropertySheet :: OnInitDialog中稍微比此代碼僅顯示正確的框架顯示的效果,同時光標在我拖過窗口邊框時發生變化。但沒有調整大小的功能。

在OnInitDialog中使用時,也會發生CDialog。接縫在創建窗口後不能更改某些標誌。

是否有關於此問題的更多信息?

回答

3

您需要的nFlags參數設置爲SWP_FRAMECHANGED,也許還SWP_DRAWFRAME在您的來電ModifyStyle。這樣它將在內部調用SetWindowPos,這將應用新的風格。您還需要刪除WS_SYSMENU而不是DS_MODALFRAME。

例子:

ModifyStyle(WS_SYSMENU, WS_POPUP | WS_THICKFRAME | WS_MAXIMIZEBOX, SWP_FRAMECHANGED); 
+0

謝謝你的答案,但:NO!這不行!我只是測試它。用一個簡單的CDialog。在OnInitDialog中,我放置了代碼。 SWP_DRAWFRAME。效果如所述。光標形式發生變化。調整大小不會發生。 – xMRi

+0

也許您需要使用ModifyStyleEx來檢查和修改或重置一些ex樣式(由CDialog :: OnInit添加)。 – VuVirt

+0

沒有了。我用這段代碼清除了所有標誌:ModifyStyle(DS_MODALFRAME,WS_POPUP | WS_THICKFRAME | WS_MAXIMIZEBOX,SWP_FRAMECHANGED); ModifyStyleEx(0xFFFFFFFF,0,SWP_FRAMECHANGED); 你的方式不起作用。 – xMRi

相關問題