【发布时间】:2021-04-08 21:23:34
【问题描述】:
在带有 MFC 的 Visual C++ 中,我想从 CScrollView 中删除未使用的水平滚动条。我找到了很多方法,但我需要垂直滚动条。自然,必须重写 OnSize,而不是调用 base 的 OnSize。但是垂直滚动条必须保留,所以我必须调用base的OnSize。例如,什么是 OnSize?谢谢你。 (我不是编程初学者,但我是图形用户界面的初学者)。
更新(我的英语不完美):
如果不需要滚动条(整个视图都适合窗口),滚动条会消失,但前提是没有拆分器!
class CChildFrame: public CMDIChildWndEx {
protected:
CSplitterWndEx m_wndSplitter;
public:
virtual BOOL OnCreateClient(CREATESTRUCT *, CCreateContext *const pContext) {
return m_wndSplitter.Create(this, 2, 1, CSize(60, 60), pContext);
}
// Project Wizard generated code
};
没有这个,窗口菜单中的菜单项拆分被禁用,因此,不可选:拆分视图不起作用。如何使用拆分器启用自动消失?
这与启用拆分器无关(有 2 个视图)或未启用:即使仅存在 1 个视图,不需要的拆分器也不会消失。
两个视图有自己的垂直滚动条,但共享水平滚动条:它们一次滚动。但我想设置不同的位置。如何创建自己的滚动条?
【问题讨论】:
-
您的代码不完整。您创建了拆分器的单元格,但没有创建它们的内容。之后你将需要像
m_wndSplitter.CreateView(0 ,0, RUNTIME_CLASS(CMyOwnView), CSize(100, 100), pContext); m_wndSplitter.CreateView(1, 0, RUNTIME_CLASS(CMyOwnView), CSize(100, 100), pContext);这样的东西。稍后您可以使用代码为CMyOwnView *pSubView = (CMyOwnView*) m_wndSplitter.GetPane(0, 1);获取每个视图 -
菜单执行以下操作:窗口/拆分。最初只有一个视图,菜单创建另一个。我试过了,工作正常,但是有一个常见的水平滚动条(我不能在 2 个视图上设置不同的位置),如果不需要,什么不会消失(整个视图都适合窗口)。
标签: c++ windows mfc desktop-application