如何防止WTL CSplitterWindow调整大小?

时间:2017-02-03 00:41:39

标签: c++ wtl

我正在查看MFC拆分器窗口类覆盖:

https://www.codeproject.com/Articles/6188/How-to-prevent-resizing-of-views-in-a-splitter-win

我用WTL CSplitterWindow测试了覆盖源代码,但它没有用。

我使用CSplitOverride而不是CSplitterWindow类修改了MainFrm.h。

当程序启动时“api-ms-win-core-libraryloader-l1-2-0.dll missing ...”弹出错误信息显示。

Windows 7 64位os平台,32位vs2015版本。

class CSplitOverride : public CSplitterWindow
{
public:
  CSplitOverride() { }

protected:
  BEGIN_MSG_MAP(CSplitOverride)
  MESSAGE_HANDLER(WM_NCHITTEST, OnNcHitTest)
  END_MSG_MAP()

public:
  LRESULT OnNcHitTest(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& /*bHandled*/)
  {
    return HTNOWHERE;
  }
};
编辑:我曾尝试过厚帧设置但没有可用。 Jan S解决方案就像我想要的那样。

1 个答案:

答案 0 :(得分:1)

看看Michael Dunns excellent tutorial on splitter windows(这需要做一些修改才能在vs2013中编译!)

WTL sourceforge网站上的

This discussion也可能有用

我认为你问的是在调整主框架大小时如何保持窗格的大小不变?这取决于固定窗格的对齐

atlsplit.h定义了以下扩展样式

#define SPLIT_RIGHTALIGNED      0x00000004
#define SPLIT_BOTTOMALIGNED     SPLIT_RIGHTALIGNED

正如Michael Dun所说 - "如果没有指定这三种风格,分割器默认为左对齐或顶对齐。"

  • SPLIT_NONINTERACTIVE阻止用户调整窗格大小
  • m_cxyMin硬编码由对齐

    指定的窗格的最小大小

    m_wndHorzSplit.SetSplitterExtendedStyle(SPLIT_BOTTOMALIGNED | SPLIT_NONINTERACTIVE); m_wndHorzSplit.m_cxyMin = 150;