计算机图形学
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

1.3 Visual C++简单程序设计

本节重点介绐程序中的菜单及对话框的设计。

1.3.1 菜单的设计

(1) 单击“ResourceView”标签,选择“Menu”项,双击其下的“IDR_MAINFRAME”,如图1-13所示,进入菜单编辑界面。

图1-13 菜单编辑界面

(2) 在右边菜单空栏上单击鼠标右键,选择“属性”选项,弹出如图1-14所示对话框。

图1-14 “菜单项目属性”对话框

(3) 在“图形”菜单的子菜单空栏处单击鼠标右键,选择“属性”选项,弹出如图1-15所示对话框,设置其子菜单属性。

图1-15 子菜单属性设置

(4) 在菜单编辑界面处单击鼠标右键,选择“建立类向导”选项,操作如图1-16所示。

图1-16 建立类向导

(5) 在弹出的类向导对话框中,进行如图1-17所示的选择。

图1-17 MFC ClassWizard 对话框

(6) 单击“Add Function”按钮,弹出如图1-18所示对话框,添加一个成员函数。

(7) 单击“OK”按钮,回到如图1-17所示界面,单击“Edit Code”按钮,进入如图1-19所示代码编辑界面。

图1-18 添加成员函数对话框

图1-19 代码编辑界面

在“// TODO: Add your command handler code here”处输入自己的代码,例如:

CDC ∗pDC=GetDC();
pDC->MoveTo (0,0);
pDC->LineTo (100,100);

单击工具栏处“!”按钮,程序开始运行,然后单击应用程序“图形”菜单下的“直线”子菜单,就可以绘制出一条直线。

1.3.2 对话框的设计

如果直线段的起点坐标与终点坐标需要用户输入,则可使用对话框。

(1) 建立新对话框

单击“ResourceView”标签,选择“Dialog”,并按鼠标右键,选择“插入Dialog”选项(见图1-20),进入对话框编辑界面(见图1-21)。

(2) 添加输出图形的控件

扩大对话框,并在图1-21中的控件工具内选择“图像”控件,拖入对话框中,按鼠标右键,选择“属性”(见图1-22)选项,弹出属性对话框(见图1-23),修改ID值为IDC_GRAPHIC,选择“类型”中的位图,使该控件用于图形的显示。

图1-20 插入对话框

图1-21 对话框编辑界面

图1-22 对话框编辑界面

图1-23 添加显示图形控件

(3) 添加与修改按钮

在控件工具内选择“按钮”控件,拖入对话框中,按鼠标右键,选择“属性”选项,修改ID值为IDC_LINE,标题改为“直线”。同时,删除已有的“确定”按钮,并将“取消”按钮的标题改为“退出”,如图1-24所示。

(4) 添加静态文本与编辑框

在控件工具内选择“静态文本”控件,拖入对话框中,按鼠标右键,选择“属性”选项,标题改为“直线起点(x,y)”。再拖入一个静态文本,标题为“直线终点(x,y)”。

在控件工具内选择“编辑框”控件,拖入对话框中,共拖入4个编辑框,如图1-25所示。

图1-24 添加与修改按钮

图1-25 添加静态文本与编辑框

(5) 建立新对话框类

完成对话框内的控件设计后,双击对话框,出现如图1-26所示添加新类的对话框,单击“OK”按钮(默认值是建立一个新类),如图1-27所示给新类添加信息,除了类名是用户输入外(这里输入的是Cline),其他可使用默认值。最后单击“OK”按钮,完成新对话框的建立。这时在Class name区中增加了一个新类line,在FileView区中增加了一个新文件line.cpp和line.h。

图1-26 添加新类的对话框

图1-27 建立新类对话框

(6) 建立控件的成员数据

在“查看”菜单选择“建立类向导”,出现如图1-28所示的对话框,选择“Member Variables”标签,再选择第1个编辑框,单击“Add Variable”按钮,出现如图1-29所示对话框。在“Member variable name”下方,输入编辑框对应的成员变量名(这里输入的是m_x0)。在“Variable type”下方,选择类型为“int”。其他编辑框进行同样操作,最后结果如图1-30所示。单击“确定”按钮,完成成员变量的定义。

图1-28 建立成员变量

图1-29 定义成员变量

图1-30 最终的成员变量

(7) 获取编辑框的数据

当用户在编辑框输入数据或改变编辑框中的数据时,需要将控件中的数据传递给相应的成员数据,采用UpdateData函数实现。

双击第一个编辑框,出现如图1-31所示对话框,OnChangeEdit1( )为编辑框改变值的响应函数,单击“OK”按钮,进入程序编辑窗口(见图1-32),在编辑框的响应函数写入如下代码:

UpdateData(true);

其他3个编辑框按同样方式处理。

图1-31 生成编辑框的响应函数

图1-32 编辑框响应函数

(8) 按钮响应函数

双击“直线”按钮,出现响应该按钮的成员函数名(见图1-33),单击“OK”按钮后,在line对话框类文件line.cpp中增加了一个空内容的OnButtion1( )成员函数(见图1-34),由用户完成内容。例如,输入如下代码,实现直线的绘制:

CDC ∗pDC=GetDC();
pDC->MoveTo(m_x0,m_y0);
pDC->LineTo(m_x1,m_y1);

图1-33 建立成员函数

图1-34 按钮响应函数

(9) 通过菜单项显示对话框

在“FileView”标签中,打开graphicView.cpp文件,在void CGraphicView::OnLine( )函数中编写如下代码:

Cline dlg;  //定义对话框类对象dlg
dlg.DoModal( );  //通过对话框类对象dlg的成员函数DoModal( )显示对话框

由于程序中使用了对话框类Cline,因此需要在graphicView.cpp前面包含该类的定义文件:

#include "line.h"

程序运行结果如图1-35所示。

图1-35 程序运行结果