2017-08-03 30 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

相关问题