2

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

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

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

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

谢谢!

4

3 回答 3

1

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

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

于 2013-09-30T17:35:20.607 回答
0

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

我假设您所说的组件是指控件和一些此类,而不是子窗口,例如在 MDI 类型的应用程序中。

于 2013-09-30T15:11:42.417 回答
0

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

于 2013-10-02T08:17:46.537 回答