如何使浮动 CMFCToolbar 不可移动

Posted

技术标签:

【中文标题】如何使浮动 CMFCToolbar 不可移动【英文标题】:How to make a floating CMFCToolbar nonmovable 【发布时间】:2017-10-05 20:25:39 【问题描述】:

首先我将我的 CMFCToolbar 设为永久 m_wndMyToolBar.SetPermament(TRUE); // 它删除了关闭按钮

现在,如何实现用户无法移动永久CMFCToolbar?

我尝试对 CMFCToolbar 进行子类化,但在此类中从未调用过 ON_WM_MOUSEMOVE 和 ON_WM_NCMOUSEMOVE。

【问题讨论】:

【参考方案1】:

如果您想修复所有工具栏,只需删除

 EnableDocking(CBRS_ALIGN_ANY);

在您的 CMainFrame 类中。

要处理单个柱,请尝试覆盖 FloatControlBar 并返回 FALSE。

防止特殊栏浮动的最后也是最好的方法是覆盖OnBeforeFloat并返回FALSE。该函数由FLoatControlBar调用

阻止任何事情的最后一种方法是捕获WM_NCHITTEST。处理它并返回HTCLIENT 或最终返回HTNOWHERE

【讨论】:

那是相反的方式。我不希望工具栏“停靠”在顶部、左右、底部。我现在使用 OnBeforeDock() 来防止停靠工具栏。但工具栏仍然可以移动。 添加了额外的答案 处理 WM_NCHITTEST 在停靠模式下工作,但在浮动模式下仍可移动。 :( 让它不要浮动...否则工具栏将被包裹到一个可移动的窗口中。你无法保护它。

以上是关于如何使浮动 CMFCToolbar 不可移动的主要内容,如果未能解决你的问题,请参考以下文章

如何更改 CMFCToolBar 运行时

如何在动态创建的 CMFCToolbar 的 ToolTip 中添加描述?

css 浮动(float)

MFC:如何让 CMFCToolBarComboBoxButton 显示在 CMFCToolBar 上?

Android FloatingActionButton(浮动动作按钮的动画 ) 使用详情

如何将选项检查菜单添加到 CMFCToolBar 以允许同时进行多项检查