基于对话框的vc练习2.docx
- 文档编号:10944737
- 上传时间:2023-05-28
- 格式:DOCX
- 页数:14
- 大小:188.42KB
基于对话框的vc练习2.docx
《基于对话框的vc练习2.docx》由会员分享,可在线阅读,更多相关《基于对话框的vc练习2.docx(14页珍藏版)》请在冰点文库上搜索。
基于对话框的vc练习2
VC选修课大作业
姓名:
XXX班级:
XXXXXX学号:
XXXXXXXXXX
一、程序功能
选择题考试与评分。
二、学习知识点
1.使用VC6应用程序向导创建基于对话框的应用程序。
2.使用资源编辑器为对话框添加控件:
2个静态控件CStatic、4个按钮控件CButton和4个单选按钮控件。
3.使用类向导处理消息:
按钮和单选按钮8个控件。
4.对话框初始化处理函数。
5.使用CWnd窗口类成员函数
SetDlgItemText(ID,lpszString)设置控件文本标题
EnableWindow(FALSE)禁用控件
EnableWindow(TRUE)激活控件
GetDlgItem(ID)通过ID获得控件指针
6.使用CButton类成员函数SetCheck()设置单选按钮选中状态。
7.使用CStdioFile类对象读文本文件。
8.使用CString类处理字符串。
控件工具栏常用控件
三、操作步骤
步骤1:
生成程序框架
项目名称:
0812345678
项目类型:
MFCAppWizard(exe)
框架类型:
基于对话框应用程序(Dialogbased)
启动VC6程序,选择“File”、“New”命令(图1),
选择“Projects”选项卡标签,选中MFCAppWizard(exe)项目类型,在Location:
对话框中确定项目位置,在ProjectName:
编辑框中输入项目名称0812345678,单击“OK”按钮后,将进入MFCAppWizard–Step1对话框(图2)。
选择“Dialogbased”基于对话框程序框架类型,直接单击“Finish”按钮(或者连续单击Next按钮)。
单击“OK”按钮,生成框架程序。
步骤2:
编辑对话框资源
将项目工作区窗口切换到ResourceView页面,双击Dialog目录下ID为IDD_MY0812345678对话框模板。
删除原有的2按钮控件和1个静态控件,用鼠标右击对话框模板选择“Properties”属性命令,可以将窗口标题Caption属性值“0812345678”改成“选择题答题窗口”。
使用控件工具栏向对话框模板添加2个静态控件(题号和题目)、4个单选按钮(4个答案),4个按钮控件,调整控件的大小和位置。
用鼠标右击每个控件选择“Properties”属性命令,可以设置各个控件的属性值:
更改题号和题目两个静态控件的ID为:
IDC_STATIC_TH和IDC_STATIC_TM
更改4个单选按钮控件的ID分别为:
IDC_RADIOA、IDC_RADIOB、IDC_RADIOC、IDC_RADIOD。
并为IDC_RADIOA控件设置“Group”属性,其它3个单选按钮不能设置该属性。
四个按钮控件选择默认的ID值,设置标题属性(Caption)分别为“上一题”、“下一题”、“评分”、“结束”。
步骤3:
在CMy0812345678Dlg类中添加数据成员
在项目工作区窗口中选择ClassView窗口,双击CMy0812345678Dlg类名字,打开0812345678Dlg.h文件,添加7个Cstring类的对象数组和1个整型变量。
classCMy0812345678Dlg:
publicCDialog
{
//Construction
public:
CStringtm[5],xza[5],xzb[5],xzc[5],xzd[5],xzok[5],xz[5];
intno;
CMy0812345678Dlg(CWnd*pParent=NULL);//standardconstructor
……
}
步骤4:
消息与处理函数
⑴对话框初始化
在项目工作区窗口中选择ClassView窗口,双击CMy0812345678Dlg类中对话框初始化函数OnInitDialog,在注释行//TODO:
Addextrainitializationhere下面输入下面程序代码:
CStdioFilef;
if(!
f.Open("xzt.txt",CFile:
:
modeRead))
{MessageBox("Openxzt.txtFail!
");
exit(0);
}
for(inti=0;i<5;i++)
{
f.ReadString(tm[i]);
f.ReadString(xza[i]);
f.ReadString(xzb[i]);
f.ReadString(xzc[i]);
f.ReadString(xzd[i]);
f.ReadString(xzok[i]);
}
f.Close();
SetDlgItemText(IDC_STATIC_TH,"第1题");
SetDlgItemText(IDC_STATIC_TM,tm[0]);
SetDlgItemText(IDC_RADIOA,xza[0]);
SetDlgItemText(IDC_RADIOB,xzb[0]);
SetDlgItemText(IDC_RADIOC,xzc[0]);
SetDlgItemText(IDC_RADIOD,xzd[0]);
CWnd*p;
p=GetDlgItem(IDC_BUTTON1);
p->EnableWindow(FALSE);
no=0;
该段代码从项目工作区中xzt.txt题库文件读入5个选择题和答案,然后初始化对话框(显示题目内容)。
该题库文件为文本文件,内容和格式如下:
tm1****************************
xza?
?
?
?
?
?
?
?
?
?
?
xzb?
?
?
?
?
?
?
?
?
?
?
xzc?
?
?
?
?
?
?
?
?
?
?
xzd?
?
?
?
?
?
?
?
?
?
?
b
tm2****************************
xza?
?
?
?
?
?
?
?
?
?
?
xzb?
?
?
?
?
?
?
?
?
?
?
xzc?
?
?
?
?
?
?
?
?
?
?
xzd?
?
?
?
?
?
?
?
?
?
?
a
tm3****************************
xza?
?
?
?
?
?
?
?
?
?
?
xzb?
?
?
?
?
?
?
?
?
?
?
xzc?
?
?
?
?
?
?
?
?
?
?
xzd?
?
?
?
?
?
?
?
?
?
?
b
tm4****************************
xza?
?
?
?
?
?
?
?
?
?
?
xzb?
?
?
?
?
?
?
?
?
?
?
xzc?
?
?
?
?
?
?
?
?
?
?
xzd?
?
?
?
?
?
?
?
?
?
?
c
tm5****************************
xza?
?
?
?
?
?
?
?
?
?
?
xzb?
?
?
?
?
?
?
?
?
?
?
xzc?
?
?
?
?
?
?
?
?
?
?
xzd?
?
?
?
?
?
?
?
?
?
?
d
⑵处理单选按钮消息
选择菜单命令[View]->[ClassVizard…],在类向导对话框中,选择Messagemaps选项卡,并确认下面选择:
选项选项值说明
Project:
0812345678项目名称
Classname:
CMy0812345678Dlg类名字
ObjectIDs:
IDC_RADIOA对象标识ID
Messages:
BN_CLICKED单击消息
然后单击“AddFunction…”按钮,将会弹出“AddMemberFunction”加入成员函数对话框,单击“OK”按钮使用默认的消息处理函数名字OnRadioa(可以更改)。
单击类向导对话框中“EditCode”按钮,可以直接进入OnRadioa函数中输入下面程序代码:
voidCMy0812345678Dlg:
:
OnRadioa()
{
//TODO:
Addyourcontrolnotificationhandlercodehere
xz[no]="a";
}
类似地添加另3个单选按钮处理函数:
voidCMy0812345678Dlg:
:
OnRadiob()
{
//TODO:
Addyourcontrolnotificationhandlercodehere
xz[no]="b";
}
voidCMy0812345678Dlg:
:
OnRadioc()
{
//TODO:
Addyourcontrolnotificationhandlercodehere
xz[no]="c";
}
voidCMy0812345678Dlg:
:
OnRadiod()
{
//TODO:
Addyourcontrolnotificationhandlercodehere
xz[no]="d";
}
⑶处理按钮消息
选择菜单命令[View]->[ClassVizard…],在类向导对话框中,选择Messagemaps选项卡,并确认下面选择:
选项选项值说明
Project:
0812345678项目名称
Classname:
CMy0812345678Dlg类名字
ObjectIDs:
IDC_BUTTON1对象标识ID
Messages:
BN_CLICKED单击消息
然后单击“AddFunction…”按钮,将会弹出“AddMemberFunction”加入成员函数对话框,单击“OK”按钮使用默认的消息处理函数名字OnButton1(可以更改)。
单击类向导对话框中“EditCode”按钮,可以直接进入OnButton1函数中输入下面程序代码:
voidCMy0812345678Dlg:
:
OnButton1()
{
//TODO:
Addyourcontrolnotificationhandlercodehere
CStringstr;
no--;
str.Format("第%d题",no+1);
SetDlgItemText(IDC_STATIC_TH,str);
SetDlgItemText(IDC_STATIC_TM,tm[no]);
SetDlgItemText(IDC_RADIOA,xza[no]);
SetDlgItemText(IDC_RADIOB,xzb[no]);
SetDlgItemText(IDC_RADIOC,xzc[no]);
SetDlgItemText(IDC_RADIOD,xzd[no]);
if(no==0)
{CWnd*p;
p=GetDlgItem(IDC_BUTTON1);
p->EnableWindow(FALSE);
}
if(no==3)
{CWnd*p;
p=GetDlgItem(IDC_BUTTON2);
p->EnableWindow(TRUE);
}
CButton*pa,*pb,*pc,*pd;
pa=(CButton*)GetDlgItem(IDC_RADIOA);
pb=(CButton*)GetDlgItem(IDC_RADIOB);
pc=(CButton*)GetDlgItem(IDC_RADIOC);
pd=(CButton*)GetDlgItem(IDC_RADIOD);
if(xz[no]=="a")
pa->SetCheck
(1);
else
pa->SetCheck(0);
if(xz[no]=="b")
pb->SetCheck
(1);
else
pb->SetCheck(0);
if(xz[no]=="c")
pc->SetCheck
(1);
else
pc->SetCheck(0);
if(xz[no]=="d")
pd->SetCheck
(1);
else
pd->SetCheck(0);
}
其它3个按钮处理函数如下:
voidCMy0812345678Dlg:
:
OnButton2()
{
//TODO:
Addyourcontrolnotificationhandlercodehere
CStringstr;
no++;
str.Format("第%d题",no+1);
SetDlgItemText(IDC_STATIC_TH,str);
SetDlgItemText(IDC_STATIC_TM,tm[no]);
SetDlgItemText(IDC_RADIOA,xza[no]);
SetDlgItemText(IDC_RADIOB,xzb[no]);
SetDlgItemText(IDC_RADIOC,xzc[no]);
SetDlgItemText(IDC_RADIOD,xzd[no]);
if(no==4)
{CWnd*p;
p=GetDlgItem(IDC_BUTTON2);
p->EnableWindow(FALSE);
}
if(no==1)
{CWnd*p;
p=GetDlgItem(IDC_BUTTON1);
p->EnableWindow(TRUE);
}
CButton*pa,*pb,*pc,*pd;
pa=(CButton*)GetDlgItem(IDC_RADIOA);
pb=(CButton*)GetDlgItem(IDC_RADIOB);
pc=(CButton*)GetDlgItem(IDC_RADIOC);
pd=(CButton*)GetDlgItem(IDC_RADIOD);
if(xz[no]=="a")
pa->SetCheck
(1);
else
pa->SetCheck(0);
if(xz[no]=="b")
pb->SetCheck
(1);
else
pb->SetCheck(0);
if(xz[no]=="c")
pc->SetCheck
(1);
else
pc->SetCheck(0);
if(xz[no]=="d")
pd->SetCheck
(1);
else
pd->SetCheck(0);
}
voidCMy0812345678Dlg:
:
OnButton3()
{
//TODO:
Addyourcontrolnotificationhandlercodehere
intk,s=0;
CStringstr;
for(k=0;k<5;k++)
if(xz[k]==xzok[k])
s++;
str.Format("成绩=%d分,满分5分",s);
MessageBox(str);
}
voidCMy0812345678Dlg:
:
OnButton4()
{
//TODO:
Addyourcontrolnotificationhandlercodehere
CDialog:
:
OnOK();
}
步骤5:
运行测试或其它说明
通过测试。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 对话框 vc 练习