计算机学院
实验报告
实验名称对话框和按钮控件课程名称面向对象技术
姓名班级学号
日期地点
成绩教师
1.实验目的
运用对话框和按钮控件设计一个可供选择的调查问卷对话框。
2.实验内容
设计一个对话框,用于问卷调查,它针对“上网”话题提出了是个问题,每个问题都有四个选项。
当回答问题后,按“确定”按钮,弹出一个消息对话框。
显示用户选择的内容。
3.实验环境(软件、硬件及条件)
VC++6.0
PC WIN7
4.实验方法
1)创建一个默认的基于对话框的应用Ex_Research。
2)Visual C++会自动打开对话框编辑器并显示对话框资源模版。
单击对话框编辑器工具栏上的切换网络按钮,显示对话框网格,将对话框标题改为“上网问卷调查”。
3)在对话框中添加实验需要的组框控件、静态文本、静态图文控件、复选按钮和单选按钮等,并按照实验要求修改对应的名称。
4)单击工具栏的测试对话框按钮,测试一下所添加的对话框效果。
5)将项目工作区切换到ClassView(类视图)页面,展开CEx_researchDig类的所有成员,双击OnInitDialog函数名就会在文档窗口中自动定位到该函数的实现代码处,在此函数添加初始化代码。
6)用MFC.ClassWizard在CEx_ResearchDlg类中添加IDOK按钮的BN_CLICKED消息映射,添加代码,使得用按“确定”按钮获取用户所作的选择内容。
7)编译并运行,出现“上网问卷调查”对话框,当回答问题后,按“确定”按钮,出现消息对话框,显示用户选择的内容。
5.实验分析
此次实验中,在4)步骤测试对话框,刚开始选择单选按钮是,两组单选按钮中只有一个单选按钮被选中,这是顺序添加的8个单选按钮全部变成一组。
解决这个问题的办法是将第一组的第一个单选按钮的Group(组)属性选中。
6.实验结论
该程序正常运行,可以按照要求显示。
由于初始化时已经设置了默认选,运行程序弹出对话框中每个提问均有选现象被选中,这样就避免了用户对某些问题未选择而带来的错误。
当用户选择完毕后,单击确认后,便弹出另一个对话框,将用户所选择的信息显示出来。
改程序界面简单明了,方便用户理解操作,而且对用户选择的内容及时反馈。
这次实验我学会了应用框架中对话框的基本应用,在对话框添加按钮控件,也要对初始化的成员,添加对应的映射,才能系统才会才对话框进行初步的处理。
附件(关键部分源代码)
1. CheckRadioButton(IDC_AGE_L18,IDC_AGE_M38,IDC_AGE
_18T27);
CheckRadioButton(IDC_CM_FTTL,IDC_CM_OTHER,IDC_C
M_FTTL);
CButton*pBtn=(CButton*)GetDlgItem(IDC_DO_POP);
pBtn->SetCheck(1); //使“收发邮件”复选框选中
CheckRadioButton(IDC_TIME_L1,IDC_TIME_M3,IDC_TIME
_L1);
2. CString str,strCtrl; //定义两个字符串变量,Csting是操作字符
串的MFC类
str="你的年龄:";
UINT nID=GetCheckedRadioButton(IDC_AGE_L18,
IDC_AGE_M38);
GetDlgItemText(nID,strCtrl);
str=str+strCtrl;
//获取第二个问题的用户选择
str=str+"\n你使用的接入方式:";
nID=GetCheckedRadioButton(IDC_CM_FTTL,IDC_CM_OTH
ER);
GetDlgItemText(nID,strCtrl); //获取指定控件的标题文本
str=str+strCtrl;
//获取第三个问题的用户选择
str=str+"\n你上网主要是:\n";
UINT nCheckIDs[4]={IDC_DO_POP,IDC_DO_READ,
IDC_DO_GAME,IDC_CM_OTHER};
CButton*pBtn;
for(int i=0;i<4;i++)
{
pBtn=(CButton*)GetDlgItem(nCheckIDs[i]);
if(pBtn->GetCheck()){
pBtn->GetWindowText(strCtrl);
str=str+strCtrl;
str=str+" ";
}
}
//获取第四个问题的用户选择
str=str+"\n你每天平均上网的时间:\n";
nID=GetCheckedRadioButton(IDC_TIME_L1,IDC_TIME_M3); GetDlgItemText(nID,strCtrl); //获取指定控件的标题文本
str=str+strCtrl;。