如何防止 WTL CSplitterWindow 调整大小?
Posted
技术标签:
【中文标题】如何防止 WTL CSplitterWindow 调整大小?【英文标题】:How to prevent WTL CSplitterWindow resize? 【发布时间】:2017-06-20 06:35:00 【问题描述】:我正在查看 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 位操作系统平台,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 解决方案就像我想要的那样工作。
【问题讨论】:
这个问题不够准确。您不希望它响应用户输入吗?你不希望它在调整父级大小时改变大小? 我尝试做的是视频 sdk 示例应用程序,主窗口调整大小已禁用,视频帧窗口不应调整大小。 查看依赖walker 许多核心Windows dll 依赖于api-ms-win-core-libraryloader-l1-2-0.dll 或其他版本。您的可执行文件不应直接依赖它。 【参考方案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;
【讨论】:
m_vSplit.SetSplitterExtendedStyle(SPLIT_NONINTERACTIVE);像魅力一样工作!以上是关于如何防止 WTL CSplitterWindow 调整大小?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 WTL 应用程序中设置 CWindowImpl FullScreen?
如何将 WTL 和 ATL 添加到 Visual Studio C++ Express 2008