c++ - 如何在 SDI 应用程序的视图中插入多个 FormView
问题描述
我在论坛上搜索并没有找到解决我的问题的方法。所以我希望你能帮助我:)
我从事一个用于 SFC 设计(顺序功能图)的个人项目,我正在 SDI 中使用 Visual Studio(我正在使用 MFC 库)。
如果您看到 SFC 的“设计”,您可以看到组成它所需的不同元素。因此,您可以找到 Step、Transition 等。
如果我采取一个步骤来解释我的问题,双击该步骤后会打开一个弹出对话框,其中包含定义此步骤的元素(此步骤的操作等)。问题就在这里,我不能同时看到两个或多个步骤元素。我想在其他软件上重用现有的概念,看这个。
步骤关闭
步骤打开
对话框添加
我的问题是,如何在大型机中实现与我的图形元素的对话框(在这种情况下,是一个步骤)?
我不知道如何用我的元素插入对话框,我想我需要使用 CFormView,但我不知道。
此对话框需要调整大小并直接按步骤图形缩小。任何想法?
先感谢您!对不起我的英语不好 ..
抱歉,我认为我的要求不清楚..(谢谢您的回答)
上下文,它是一个具有文档/视图架构的 SDI 应用程序。实际上视图是从 CScrollView 派生的。因此,在文档类中,您拥有用于制作 SFC 的不同组件列表(步骤、转换和符号 ..)。我今天在 Step 元素上工作。用户插入一个新步骤,该步骤在视图上绘制如下:
在此处输入图像描述
现在用户想要更改此步骤上的事件,为此,双击该步骤后,事件编辑器将在步骤绘制的右侧打开,如下所示:
在此处输入图像描述
为此,我创建了一个新的对话框资源并通过 CForwView 派生类中的向导创建类。在步骤属性中,您可以找到该派生类的一个实例(对话框的派生类)。
但这不能正常工作,我认为我的方法很糟糕。在第一次尝试时,我已将当前文档的指针发送到“CFormView::Create”函数,以激活“保存”按钮,并将焦点放在 FormView 上。但是在销毁该步骤后,FormView 的实例被销毁并且带有 formview 实例的文档......
没问题,您可以在 CCreateContext 中使用“创建”一个空指针。但是有没有这个文件我有很多问题(FormView中的图形设计不正确,经常(不系统我在Proc交换上断言失败(出于不同的原因))。但是“概念”很好,编辑遵循如果我滚动,我可以随时在任何元素上打开或关闭编辑器。
对于旧捕获,它是我的 SFC 设计师“模型”。我的应用程序是对这个应用程序的补充,所以我想要一个类似的设计。我不知道我的模型应用程序是如何工作的。在我的应用程序上,所有内容都是由 MFC GDI 绘制的,我不使用 ActiveX 或其他工具。
那么通过 step 实例实现一个编辑器实例的正确方法是什么?
对于这个 FormView 的实现,我有:
- 在资源中创建新对话框
- 使用创建的对话框创建 CFormView 的派生类
- 在 Step 元素的属性中添加一个实例
- “OnDbClickOnStep” -> 以良好的位置调用“创建”/大小,主视图指针(在我的情况下是 CSrollView 派生类)
- 完成,FormView 插入主视图,我可以编辑我的步骤事件。
? 没有完成,我丢失了保存按钮和其他链接到文档的功能,重点放在 FormView 中的一个控件上。该应用程序想要一个具有此视图的文档,如何覆盖它?
? Proc交换中的错误,出于不同的原因......
你有想法吗?
解决方案
您通常不会在“主框架”(或“MDI clild 框架”,在 MDI 应用程序的情况下)中绘制任何内容,这是由库完成的,而且 imo 也足够了。CView
您在派生类中显示您的数据。
CView
是所有其他 MFC 视图类的基类。这是一个简单的图形类 - 你需要自己在OnDraw()
成员中绘制它。
CScrollView
是 的后代CView
,添加滚动功能(如果可滚动区域大于可见窗口区域,则会自动显示滚动条)。
CFormView
是 的后代CScrollView
,显示一个对话框资源脚本,包含“控件”(编辑框、复选框、图像、ActiveX 等)。
在您的情况下,“控件”最初不会是已知的(可能除了一些特殊情况)而是以编程方式创建的,资源脚本很可能是空的,因此使用其中一个CFormView
或CScrollView
基本上是相同的。我建议从 开始CFormView
,然后将其“降级”到CScrollView
如果CFormView
没有必要或给您带来麻烦。
图片中显示的那些“步骤”项目是什么?ActiveX 控件,子对话框可能吗?这些最适合作为对话窗口上的子控件。它们是否已经实现,或者它们只是其他一些软件的图片?BtwActiveX
是一种定义控件的方法,该控件也可以在其他项目中使用,而不必将它们包含在项目源中。
推荐阅读
- feathersjs - feathers.js - 如何从身份验证响应中删除字段有效负载
- git - Git 协议 v1 和 v0,v2 有什么区别?
- angular - 将 Angular >11 中的日期与 *ngIf 进行比较
- excel - 是否可以在 excel 文件上从外部运行宏?
- typescript - 打字稿键值对,其中键是自定义类型
- python - Tensorflow Lite 是否在浮动权重上使用压缩?
- javascript - 如何将css和js文件应用到部分html文件
- amazon-web-services - 尝试从代码管道发送通知时,SNS 通知目标规则“无法访问”
- c# - BizTalk Orchestration BTS 对象到类库
- javascript - 单击复选框时更改下拉字段背景颜色