对话框程序设计

对话框程序设计

实验目的和要求

1)创建一个默认的对话框应用程序Ex_Ctrls,如图2.1所示。

2)设计一个如图2.2所示的课程信息对话框。

(3)实现功能:单击图2.1中的课程信息按钮,弹出学生基本信息对话框,单击添加按钮,对话框内容显示在图2.1中的列表框中。

实验准备和说明

1)具备知识:静态控件、按钮、编辑框、旋转按钮控件、列表框和组合框控件。

2)创建本次实验工作文件夹“…\实验\实验2”

实验内容和步骤

1启动Visual C++ 6.0

打开计算机,启动Visual C++ 6.0系统。

2创建一个默认的对话框应用程序Ex_Ctrls

选择文件”→“新建菜单,在弹出的新建对话框中选择工程页面,选择MFC AppWizardexe),在工程框中输入Ex_Ctrls,并将工程文件夹定位到“…\实验\实验2”

单击确定按钮,在出现的Step 1对话框中选择基本对话(框)应用程序类型,单击完成按钮。

在对话框编辑器中,单击对话框工具栏上的切换网格按钮pastedGraphic.png,显示对话框网格,将对话框标题改为使用控件

调整对话框的大小,删除对话框中间的“TODO:在这里设置对话控制。静态文本控件和确定按钮控件,将取消按钮标题改为退出,并移至对话框的下方。

向对话框中添加组框(Group)控件,标题设为添加,然后调整其大小和位置。

添加一个按钮,标题设为课程信息ID设为IDC_BUTTON_COURSE

添加一个列表框,取其默认ID号,去掉Sort风格属性。

3添加并设计课程信息对话框

Ctrl+R快捷键,弹出插入资源对话框,在资源类型列表中选择Dialog,单击新建按钮。

将该对话框资源的ID设为IDD_COURSE,标题设为课程信息,字体设为宋体,9

OKCancel按钮的标题改为添加取消

打开对话框网格,参看图2.2的控件布局,为对话框添加如表2.1所示的一些控件。

2.1 课程信息对话框添加的控件

添加的控件

ID

   

编辑框(课程号)

IDC_EDIT_COURSENO

——

默认

编辑框(课程名称)

IDC_EDIT_COURSENAME

——

默认

组合框(所属专业)

IDC_COMBO_SPECIAL

——

默认

组合框(课程类型)

IDC_COMBO_TYPE

——

默认

编辑框(开课学期)

IDC_EDIT_OPEN

——

默认

旋转按钮

IDC_SPIN1

——

Auto buddy、Set buddy integer、Right对齐,其余默认

编辑框(课时数)

IDC_EDIT_COURSEHOURS

——

默认

编辑框(学分)

IDC_EDIT_CREDIT

——

默认





右击添加的课程类型的组合框控件,从弹出的快捷菜单中选择属性命令,将其属性对话框切换到Data页面,直接输入内容,输入一行后按Ctrl+Return键添加另一行

Ctrl+W快捷键或双击对话框资源模板的空白处,为IDD_COURSE创建一个对话框CCourseDlg

打开ClassWizardMember Variables页面,看Class name是否是CCourseDlg,选中所需的控件ID号,双击鼠标。依次为表2.2控件增加成员变量。

2.2 控件变量


控件ID

变量类别

变量类型

变量名

范围和大小

IDC_EDIT_COURSENO

Value

CString

m_strNO


IDC_EDIT_COURSENAME

Value

CString

m_strName


IDC_COMBO_SPECIAL

Value

CString

m_strSpecial


IDC_COMBO_SPECIAL

Control

CComboBox

m_comboSpecial


IDC_COMBO_TYPE

Value

CString

m_strType


IDC_EDIT_OPEN

Value

BYTE

m_nOpen


IDC_SPIN1

Control

CSpinButtonCtrl

m_spinOpen


IDC_EDIT_COURSEHOURS

Value

int

m_nHours


IDC_EDIT_CREDIT

Value

float

m_fCredit







4添加CCourseDlg类代码

MFC ClassWizardCCourseDlg类添加WM_INITDIALOG消息映射,并添加下列初始化代码:

BOOL CCourseDlg::OnInitDialog() 
{
		CDialog::OnInitDialog();
	m_spinOpen.SetRange( 1, 8 );
	m_nHours = 60;
	m_fCredit = 2.0;
	m_nOpen = 1;
	m_strType = "专修";
	// 这里对专业组合框进行初如化
	m_comboSpecial.AddString( "计算机科学与技术" );
	m_comboSpecial.AddString( "网络工程" );
	m_strSpecial = "软件工程";
	UpdateData(FALSE);
		return TRUE;  // return TRUE unless you set the focus to a control
}

MFC ClassWizard为按钮IDOK添加BN_CLICKED的消息映射,并增加下列      代码:

void CCourseDlg::OnOK() 
{
	UpdateData();
	m_strNO.TrimLeft();
	if (m_strNO.IsEmpty())	{
		MessageBox("课程号不能为空!");		return;
	}
	m_strName.TrimLeft();
	if (m_strName.IsEmpty())	{
		MessageBox("课程名称不能为空!");		return;
	}
	CDialog::OnOK();
}

5添加CEx_CtrlsDlg程序代码

Ctrl+W快捷键,打开MFC ClassWizard对话框,为列表框控件IDC_LIST1添加控件变量m_List,类型为CListBox

MFC ClassWizard为按钮IDC_BUTTON_COURSE添加BN_CLICKED消息映射,并添加下列代码:

void CEx_CtrlsDlg::OnButtonCourse() 
{
	CCourseDlg dlg;
	if (IDOK != dlg.DoModal()) return;
	// 清除列表框原来的显示内容
	while(m_List.GetCount()!=0) m_List.DeleteString(0);
	m_List.AddString( "课 程 号:"+dlg.m_strNO);
	m_List.AddString( "课程名称:"+dlg.m_strName);
	m_List.AddString( "所属专业:"+dlg.m_strSpecial);
	m_List.AddString( "课程类型:"+dlg.m_strType);
	CString str;
	str.Format("开课学期:%d", dlg.m_nOpen );
	m_List.AddString( str );
	str.Format("课 时 数:%d", dlg.m_nHours );
	m_List.AddString( str );
	str.Format("学    分:%4.1f", dlg.m_fCredit);
	m_List.AddString( str );	
}

Ex_CtrlsDlg.cpp文件的前面添加CInputDlg的头文件包含:

#include "Ex_CtrlsDlg.h"
#include "CourseDlg.h"

编译运行并测试。


你可能感兴趣的:(对话框程序设计)