问题标签 [cview]

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 投票
0 回答
50 浏览

go - 使用 CView 创建 TUI:网格和使部件不可选择

我正在使用 tslocum ( https://code.rocketnine.space/tslocum/cview ) 的 CView 库创建一个 TUI 应用程序,并想知道是否有人知道如何处理这个问题。

我为动态布局创建了一个网格;顶部有一个“横幅”文本视图,顶部有一个标题。显示屏底部一分为二;左侧是带有一些按钮的表单,右侧是带有一些解释性文本的文本视图。

如果选择/聚焦左列,则使用鼠标(以及选项卡和 shift-tab)导航按钮有效。如果单击文本视图,它们将获得焦点,并且不清楚如何再次选择表单以使用键盘导航按钮。我不想完全禁用鼠标。

所以除非有另一种方法来处理它,有没有办法让表单成为唯一的可选项目,或者禁用文本视图获得焦点?或者将一个动作附加到网格中的文本视图,这样如果它们被选中,它会将选择移回表单?我一直在尝试在演示和扩展坞中找到解决方案,但我还没有完全找到可行的方法。

这是我用来创建网格的内容:

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