在CSoildHoopsView类的实现文件中添加消息映射ON_COMMAND,
以上内容可直接用VC6.0中MFC ClassWizard自动生成,然后编写OnLifang()函数实现内容:
实现效果:
Acispartviewer参数化驱动 三维长方体的功能
在实现立方体的功能上,我们将实现长方体的功能,长方体的长、宽、高数值由我们自己设置。 思路:在菜单栏或者工具栏增加一个菜单项,消息映射函数里创建一个模式对话框,该对话框里设置数值,点击确定创建长方体,点击取消,不做任何操作。 例: 首先在资源文件的菜单选项里添加菜单项(lifang),设置其消息ID(IDM_LIFANG) 添加对应的消息函数OnLifang() ,方法与前面例子相同。 设置全局变量,用来存放立方体的长宽高等数据。 在资源菜单里添加一个对话框窗口,具体设置如图:
创建该对话框类CLifangDlg。重写OnOK()函数,实现当点击确定按钮时,将编辑框内的数据传给全局变量。
在OnLifang()函数实现该长方体创建的功能。
实现效果:
思考:
该功能是否还有需要完善的地方? 如编辑框内数值为0时,程序崩溃。
三维立方体功能的产品化
针对上面例子中部分功能不完善处,下面我们来实现改进工作。
1 编辑框内可以填写除数字以外的符号。
打开该对话框的资源文件,设置其属性Properties的styles选项卡中勾选Number选项。
2 编辑框内设置初始值。
打开编辑框的类,在Dodataexchange()函数中对编辑框内的内容进行初始化。
初始化代码如下
3 编辑框内设置数值为0时程序会崩溃
解决数值为0的问题首先要对编辑框内得到的数据进行判断,判断为非正数的时候不能通过,达到如下效果
为了达到该效果,就需要对点击确定时进行处理,当数据正确时,能正常的进行后续操作,当数据不对时,弹出对话框提示输入正确的数据,并继续进行输入数据操作。这里判断位置仍然在OnOk()函数中进行判断。代码如下:
添加条件判断即可解决该问题。
4 添加预览功能
首先,要添加预览功能,则需要在对话框不关闭的前提下进行,否则无法在窗口中显示我们需要的图形。前面的对话框都是在建立的模式对话框,达到预览功能则需要建立非模式对话框。 创建具有预览功能的对话框。
① 建立非模式对话框
我们例子中代码只需在菜单项flifang的响应函数中添加即可。