如何防止用户拖动窗口?

时间:2013-09-30 14:53:11

标签: windows visual-c++ mfc cwnd

我继承了一个为用户提供一组标签的项目,每个标签都包含一个显示多个组件的视图。在其中一些选项卡中,我们希望阻止用户移动选项卡中显示的组件。

我们有一个继承自CMFCTabCtrl的对象来管理我们的标签,其中包含代表我们每个标签的CWnd对象的集合。我们还有一个对象来管理与每个选项卡关联的视图,并在激活相关选项卡时激活这些视图。

组件都共享一个继承自CWnd的基础对象,CWnd定义了继承消息映射中定义的消息的各种处理程序。

阻止用户拖动这些组件的正确/最佳方法是什么?

谢谢!

3 个答案:

答案 0 :(得分:1)

一种解决方案是从组件CWnds中删除标题栏样式。如果没有标题栏,用户就无法拖动窗口。

另一种方法是处理组件CWnds中的WM_NCHITEST消息。如果返回适当的值,用户的鼠标在单击时将无法识别为标题栏。

答案 1 :(得分:0)

移动组件不是Windows默认启用的功能。移动组件的代码存在于项目中。在您希望禁用该代码的情况下,必须禁用该代码。

我认为组件是指控件和一些这样的,而不是子窗口,就像在MDI类型的应用程序中一样。

答案 2 :(得分:0)

尝试将CMFCTabCtrl :: m_bActivateOnBtnUp设置为TRUE。 这可能会停用Drag& Drop的东西。