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 程序运行结果