问题标签 [csplitterwnd]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
63 浏览

mfc - MFC:将 CSplitterWnd 应用到我的 CChildFrame 后,主窗口标题不再更新

仍然使用 VS 2008,我在我的 MDI 视图类中拆分了我的 MDI 视图类,以便使用静态拆分器(源代码)在我旧的旁边CChildFrame的导航侧边栏(a )。然而,这意味着两个副作用:除了鼠标滚轮不再工作(我找到了一种解决方法)之外,应用程序窗口不再更新。我需要做些什么来桥接拆分器,以便框架根据我的 ? 再次更新应用程序窗口?CListCtrlCScrollViewSetPathName()CDocument

0 投票
0 回答
106 浏览

c++ - 这是在 MFC SDI 非文档/视图程序中切换视图的正确方法吗?

平台/工具链/工具包:Windows 10、Visual Studio 2019、MFC。

我想要做的是能够在事件处理程序(如双击处理程序或菜单或按钮处理程序)中将我的程序中的界面在单个 CChildView(派生自 CWnd)到包含两个窗格的 CSplitterWnd 之间来回更改(一个 CChildView 和一个基于 CListview 的类)。

这是对文件查看器的重写,我省略了所有特定于应用程序的内容。这个想法是,在一种模式下,用户只查看文件,而在另一种模式下,用户正在查看左侧的文件系统目录列表窗格和右侧的窗格,其中包含在文件列表中选择的任何文件。所以很常见的成语。

我有下面的代码。

两种 UI 模式(如果您愿意的话)是:

我所做的是创建一个隐藏窗口,它成为未显示视图的父级,而我的 CMainFrame 是显示的任何视图的父级。为了隐藏 m_wndSplitter,我将其父级设置为隐藏窗口,然后隐藏它及其窗格的视图,最后将简单的 m_simpleView 父级设置为 CMainFrame 并显示它。切换以显示拆分器,步骤相反。

一对事件处理程序连接到视图菜单中的条目。一个隐藏简单的 m_simpleView 并显示 m_wndSplitter;另一个处理程序隐藏 m_wndSplitter 并显示简单的 m_simpleView。

我正在寻找有关我的事件处理程序的实现、我对 SetParent() 和 ShowWindow() 的使用的反馈。以我的经验,MFC 可以在释放和咬人之前的最后一秒跳出深奥的微妙之处。而这种切换 UI 视图的解决方案似乎太容易了……

所以,问题:

  • 这个方案合理吗?
  • MFC 框架在事件处理程序执行后不知道默认或活动视图是什么时,是否存在一些微妙之处?
  • 我是不是很简单(太聪明了)?

摘自股票发行的新项目向导为具有拆分窗口的 MFC、SDI、非文档/视图项目生成的代码:

主框架.h:

主框架.cpp:

CChildView.h(.cpp 是项目向导的所有样板):

CChildListView.h