OpenCasCade+VS2019:修改OpenCasCade7.5.0中的MFC的samples,添加对话框(弹窗)
在对OpenCasCade7.5.0中的MFC的sample进行修改的过程中,会需要添加对话框以实现一些新的交互功能。这里介绍如何在OpenCasCade7.5.0中的MFC的samples中添加对话框(弹窗)。
1、新建对话框
找到需要添加对话框的解决方案中的.rc文件。
选择添加资源,新建一个Dialog。
将对话框设计成自己想要的样子。
2、为设计好的对话框创建类,解决自动添加时的一些报错
右键对话框,选择添加类。
基类选择CDialog,类名自己设。
自动添加后发现会有一些错误:
1、无法打开源文件“pch.h”。
解决方法:直接删除“pch.h”文件。
2、出现一些不允许继承,这是由于找不到基类CDialog。
解决方法:添加#include <afxwin.h>
3、修改完1和2后,还会有一个错误,未定义标识符。即没有找到我们设计的对话框在系统中的编号。
解决方法:找到解决方案中的“resource.h”文件,打开后,发现可以找到我们想要的“IDD_DIALOG1”。之后,找到“resource.h”的属性,复制其中的相对路径,添加到“CTestDialog.cpp”中。
4、修改完1、2、3后,暂时找不到错误,尝试进行编译,会出现报错。
解决方法:按照提示,添加"stdafx.h"。
5、继续尝试编译,仍然失败,提示无法打开“OCC_Resource.h”。出现该问题的原因暂时不知。
解决方法:双击找到出错位置,删去一个“…\”。
再次尝试,编译通过。
3、使用我们设计的对话框,使其可以通过现有的MFC案例中的按钮触发并弹出。
找到我们想要弹出对话框的按钮事件的“.cpp”文件,加入我们的对话框类的头文件“CTestDialog.h”。这时会报错:无法打开源文件,即找不到这个文件。
有两个解决方法,首先找到“CTestDialog.h”的属性,找到其完整路径:
解决方法1(不推荐):将“CTestDialog.h”的完整路径放入。注意更改“\”为“/”。
解决方法2(推荐):将“CTestDialog.h”所在文件夹,放入到解决方案的包含目录中。这样下次再生成别的对话框时,也不会出现同样的问题。
在我们想要弹出对话框的按钮事件中,加入如下两行代码。
运行后点击相应按钮,自动弹出我们设计好的对话框。
4、为我们设计的对话框,增加按钮事件和按钮变量。
双击对话框中的按钮,自动创建按钮事件,这时会报错,提示未定义标识符“IDC_BUTTON1”,这是因为找不到自动创建的按钮所在的资源文件“OCC_Resource.h”。
解决方案:搜索IDC_BUTTON1,找到“OCC_Resource.h”的所在位置,添加到“CTestDialog.cpp”中。
之后,就可以自由添加按钮变量和事件了。
5、总结
在修改OpenCasCade7.5.0中的MFC的samples,添加对话框(弹窗)的过程中,遇到了许许多多的问题。总结起来最主要的就是OpenCasCade自带的案例中存在许多的资源文件,有些还是同名的,因此有时候感觉明明有这个文件,却提示没找到。这种情况多数是因为资源文件找错了,可以通过搜索或者是文件属性或者是看其它例子里类似文件的位置来找到正确的资源文件,放入对应的位置,解决这些问题。