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

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

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

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

【问题讨论】:

    标签: mfc toolbar


    【解决方案1】:

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

     EnableDocking(CBRS_ALIGN_ANY);
    

    在您的 CMainFrame 类中。

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

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

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

    【讨论】:

    • 那是相反的方式。我不希望工具栏“停靠”在顶部、左右、底部。我现在使用 OnBeforeDock() 来防止停靠工具栏。但工具栏仍然可以移动。
    • 添加了额外的答案
    • 处理 WM_NCHITTEST 在停靠模式下工作,但在浮动模式下仍可移动。 :(
    • 让它不要浮动...否则工具栏将被包裹到一个可移动的窗口中。你无法保护它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-04
    • 2020-01-02
    • 2013-08-21
    相关资源
    最近更新 更多