如何使浮动 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 的 ToolTip 中添加描述?
MFC:如何让 CMFCToolBarComboBoxButton 显示在 CMFCToolBar 上?