C++ 实验四总结报告.docx

上传人:b****5 文档编号:4552769 上传时间:2022-12-06 格式:DOCX 页数:19 大小:33.72KB
下载 相关 举报
C++ 实验四总结报告.docx_第1页
第1页 / 共19页
C++ 实验四总结报告.docx_第2页
第2页 / 共19页
C++ 实验四总结报告.docx_第3页
第3页 / 共19页
C++ 实验四总结报告.docx_第4页
第4页 / 共19页
C++ 实验四总结报告.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

C++ 实验四总结报告.docx

《C++ 实验四总结报告.docx》由会员分享,可在线阅读,更多相关《C++ 实验四总结报告.docx(19页珍藏版)》请在冰豆网上搜索。

C++ 实验四总结报告.docx

C++实验四总结报告

实验十常用控件

(1)

实验目的和要求

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

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

图2.1Ex_Ctrls对话框图2.2“课程信息”对话框

(3)实现功能:

单击图2.1中的“课程信息”按钮,弹出“学生基本信息”对话框,单击“添加”按钮,对话框内容显示在图2.1中的列表框中。

实验准备和说明

(1)具备知识:

静态控件、按钮、编辑框、旋转按钮控件、列表框和组合框控件。

(2)创建本次实验工作文件夹“…\VisualC++程序\实验\实验2”。

实验内容和步骤

1.启动VisualC++6.0

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

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

①选择“文件”→“新建”菜单,在弹出的“新建”对话框中选择“工程”页面,选择MFCAppWizard(exe),在工程框中输入Ex_Ctrls,并将工程文件夹定位到“…\VisualC++程序\实验\实验2”。

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

③在对话框编辑器中,单击对话框工具栏上的切换网格按钮

,显示对话框网格,将对话框标题改为“使用控件”。

④调整对话框的大小,删除对话框中间的“TODO:

在这里设置对话控制。

”静态文本控件和“确定”按钮控件,将“取消”按钮标题改为“退出”,并移至对话框的下方。

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

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

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

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

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

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

③将OK和Cancel按钮的标题改为“添加”和“取消”。

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

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

添加的控件

ID号

标题

其他属性

编辑框(课程号)

IDC_EDIT_COURSENO

——

默认

编辑框(课程名称)

IDC_EDIT_COURSENAME

——

默认

组合框(所属专业)

IDC_COMBO_SPECIAL

——

默认

组合框(课程类型)

IDC_COMBO_TYPE

——

默认

编辑框(开课学期)

IDC_EDIT_OPEN

——

默认

旋转按钮

IDC_SPIN1

——

Autobuddy、Setbuddyinteger、Right对齐,其余默认

编辑框(课时数)

IDC_EDIT_COURSEHOURS

——

默认

编辑框(学分)

IDC_EDIT_CREDIT

——

默认

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

同样对另一个组合框控件也进行修改。

结果如图2.3所示。

图2.3课程类型组合框内容输入

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

打开ClassWizard的MemberVariables页面,看Classname是否是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类代码

①用MFCClassWizard为CCourseDlg类添加WM_INITDIALOG消息映射,并添加下列初始化代码:

BOOLCCourseDlg:

:

OnInitDialog()

{

CDialog:

:

OnInitDialog();

m_spinOpen.SetRange(1,8);

m_nHours=60;

m_fCredit=2.0;

m_nOpen=1;

m_strType="专修";

m_strSpecial="机械工程及其自动化";//有改动

UpdateData(FALSE);

returnTRUE;//returnTRUEunlessyousetthefocustoacontrol

}

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

voidCCourseDlg:

:

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快捷键,打开MFCClassWizard对话框,为列表框控件IDC_LIST1添加控件变量m_List,类型为CListBox。

②用MFCClassWizard为按钮IDC_BUTTON_COURSE添加BN_CLICKED消息映射,并添加下列代码:

voidCEx_CtrlsDlg:

:

OnButtonCourse()

{

CCourseDlgdlg;

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);

CStringstr;

str.Format("开课学期:

%d",dlg.m_nOpen);

m_List.AddString(str);

str.Format("课时数:

%d",dlg.m_nHours);

m_List.AddString(str);

str.Format("学分:

%3.1f",dlg.m_fCredit);

m_List.AddString(str);

}

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

#include"Ex_CtrlsDlg.h"

#include"CourseDlg.h"//在“工程”—》“设置”常规选项里,选择使用MFC作为静态链接库

④编译运行并测试。

6.写出实验报告

分析上述运行结果以及思考与练习,写出实验报告。

思考与练习

(1)为CCourseDlg类添加一个公有型CString成员变量m_strOKText,当通过CCourseDlg类对象将m_strOKText设为“修改”,CCourseDlg对话框中的“添加”按钮标题变成“修改”,试编程实现。

(2)由于每学期的一门课程学分一般不超过6个学分,因此若将学分编辑框改为组合框,应如何修改和编程?

实验十一常用控件

(2)

实验目的和要求

(1)设计一个如图3.1所示的“学生基本信息”对话框。

(2)在实验2的基础上,实现功能:

在图2.1中的“课程信息”按钮下方添加一个“学生基本信息”按钮,单击该按钮,弹出“学生基本信息”对话框,单击“添加”按钮,学生基本信息显示在列表框中。

(3)在CEx_CtrlsDlg对话框中添加一个滚动条和两个滑动条来调整对话框的背景颜色的3个分量:

R(红色分量)、G(绿色分量)和B(蓝色分量),结果如图3.2所示。

图3.1“学生基本信息”对话框图3.2设置对话框背景颜色

实验准备和说明

(1)具备知识:

滚动条、进展条、滑动条、时间和日历控件。

(2)创建本次实验工作文件夹“…\VisualC++程序\实验\实验3”。

实验内容和步骤

1.在实验3的工作文件夹中复制Ex_Ctrls文件夹

将本书实验2中的Ex_Ctrls文件夹复制到实验3的工作文件夹中。

2.启动VisualC++6.0

启动VisualC++6.0系统。

3.创建并添加“学生基本信息”对话框

①选择“文件”→“打开工作区”菜单,将“…\VisualC++程序\实验\实验3\Ex_Ctrls”文件夹中的Ex_Ctrls项目打开。

②添加一个新的对话框资源,将ID号改为IDD_INPUT,标题为“学生成绩输入”,将对话框字体改为“宋体,9号”。

将OK和Cancel按钮标题改为“确定”和“取消”。

③调整对话框的大小,将“确定”和“取消”按钮移至对话框的下方,然后显示对话框网格。

④参看图3.1,向对话框添加如表3.1所示的控件。

添加两个“单选按钮”

并在第一个按钮“男”的属性—》常规选项勾选“组”,并对第一个按钮增加成员变量int型m_bMale。

第二个按钮不用勾选和增加。

表3.1学生基本信息对话框添加的控件

添加的控件

ID号

标题

其他属性

编辑框

IDC_EDIT_NAME

——

默认

编辑框

IDC_EDIT_NO

——

默认

编辑框

IDC_EDIT_S1

——

默认

旋转按钮控件

IDC_SPIN_S1

——

Autobuddy、Right对齐

编辑框

IDC_EDIT_S2

——

默认

旋转按钮控件

IDC_SPIN_S2

——

Autobuddy、Setbuddyinteger、Right对齐

编辑框

IDC_EDIT_S3

——

默认

旋转按钮控件

编辑框

IDC_SPIN_S3

IDC_SPECIAL

——

——

Autobud0dy、Setbuddyinteger、Right对齐

默认

⑤双击对话框模板空白处,为该对话框模板创建一个对话框类CInputDlg。

⑥在MFCClassWizard的MemberVariables页面中,确定Classname中是否已选择了CInputDlg,选中所需的控件ID号,双击鼠标或单击AddVariables按钮。

依次为表3.2控件增加成员变量。

表3.2控件变量

控件ID号

变量类别

变量类型

变量名

范围和大小

IDC_EDIT_NAME

Value

CString

m_strName

20

IDC_EDIT_NO

Value

CString

m_strNo

20

IDC_EDIT_S1

Value

int

m_fScore1

0.0~100.0

IDC_SPIN_S1

Control

CSpinButtonCtrl

m_spinScore1

——

IDC_EDIT_S2

Value

int

m_fScore2

0.0~100.0

IDC_SPIN_S2

Control

CSpinButtonCtrl

m_spinScore2

——

IDC_EDIT_S3

Value

int

m_fScore3

0.0~100.0

IDC_SPIN_S3

IDC_SPECIAL

Control

Value

CspinButtonCtrl

CString

m_spinScore3

m_strSpecial

——

——

在MFCClassWizard的MesssageMaps页面中,为CInputDlg添加WM_INITDIALOG消息映射,并添加下列代码:

BOOLCInputDlg:

:

OnInitDialog()

{

CDialog:

:

OnInitDialog();

m_spinScore1.SetRange(0,100);//设置旋转按钮控件范围

m_spinScore2.SetRange(0,100);

m_spinScore3.SetRange(0,100);

returnTRUE;//returnTRUEunlessyousetthefocustoacontrol

}

用MFCClassWizard为CInputDlg增加IDC_SPIN_S1控件的UDN_DELTAPOS消息映射,并添加下列代码:

voidCInputDlg:

:

OnDeltaposSpinS1(NMHDR*pNMHDR,LRESULT*pResult)

{

NM_UPDOWN*pNMUpDown=(NM_UPDOWN*)pNMHDR;

UpdateData(TRUE);//将控件的内容保存到变量中

m_fScore1+=(float)pNMUpDown->iDelta*0.5;//将m_fScore1等定义为int型

if(m_fScore1<0)m_fScore1=0;

if(m_fScore1>100)m_fScore1=100;

UpdateData(FALSE);//将变量的内容显示在控件中

*pResult=0;

}

打开IDD_EX_CTRLS_DIALOG对话框资源,在“课程信息”按钮下方添加一个“学生基本信息”按钮,并将ID号设为IDC_BUTTON_STUINFO。

用MFCClassWizard为按钮IDC_BUTTON_STUINFO添加BN_CLICKED消息映射,并添加下列代码:

voidCEx_CtrlsDlg:

:

OnButtonStuinfo()

{

CInputDlgdlg;

if(IDOK!

=dlg.DoModal())return;

while(m_List.GetCount()!

=0)

m_List.DeleteString(0);

CStringstrSex("男");

if(dlg.m_bMale)strSex="女";

m_List.AddString("姓名:

"+dlg.m_strName);

m_List.AddString("学号:

"+dlg.m_strNo);

m_List.AddString("性别:

"+strSex);

CStringstr;//修改了接下来这三条语句

str.Format("出生日期:

%d-%d-%d",dlg.m_fScore1,dlg.m_fScore2,dlg.m_fScore3);

m_List.AddString(str);

m_List.AddString("所学专业:

"+dlg.m_strSpecial);

}

在Ex_CtrlsDlg.cpp文件的前面添加CStuInfoDlg类的头文件包含:

#include"CourseDlg.h"

#include"InputDlg.h"//在“工程”—》“设置”常规选项里,选择使用MFC作为静态链接库

编译运行并测试。

结果如图3.3所示。

图3.3学生基本信息添加后的结果

4.改变对话框背景颜色

①将项目工作区窗口切换到ResourceView页面,打开IDD_EX_CTRLS_DIALOG对话框资源。

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

表3.3添加的控件

添加的控件

ID号

标题

其他属性

垂直滚动条

IDC_SCROLLBAR_RED

——

默认

滑动条(绿色)

IDC_SLIDER_GREEN

——

方位为Vertical,其他默认

滑动条(蓝色)

IDC_SLIDER_BLUE

——

方位为Vertical,其他默认

③用MFCClassWizard为表3.4控件添加成员变量。

表3.4控件变量

控件ID号

变量类别

变量类型

变量名

范围和大小

IDC_SCROLLBAR_RED

Control

CScrollBar

m_scrollRed

——

IDC_SLIDER_GREEN

Control

CSliderCtrl

m_sliderGreen

——

IDC_SLIDER_GREEN

Value

int

m_nGreen

IDC_SLIDER_BLUE

Control

CSliderCtrl

m_sliderBlue

——

IDC_SLIDER_BLUE

Value

int

m_nBlue

——

④为CEx_CtrlsDlg类添加两个成员变量,一个是int型m_nRed,用来设置颜色R、G、B中的红色分量,另一个是画刷CBrush类对象m_Brush,用来设置对话框背景所需要的画刷。

方法:

在Ex_CtrlsDlg.h头文件内找到相应位置按下图添加。

⑤在CEx_CtrlsDlg:

:

OnInitDialog函数中添加下列代码:

BOOLCEx_CtrlsDlg:

:

OnInitDialog()

{

m_scrollRed.SetScrollRange(0,255);

m_sliderBlue.SetRange(0,255);

m_sliderGreen.SetRange(0,255);//设置颜色调节范围

m_nBlue=m_nGreen=m_nRed=192;//初始化对话框背景颜色

UpdateData(FALSE);

m_scrollRed.SetScrollPos(m_nRed);

returnTRUE;//returnTRUEunlessyousetthefocustoacontrol

}

⑥用MFCClassWizard为CEx_CtrlsDlg类映射WM_VSCROLL消息,并添加下列代码:

voidCEx_CtrlsDlg:

:

OnVScroll(UINTnSBCode,UINTnPos,CScrollBar*pScrollBar)

{

intnID=pScrollBar->GetDlgCtrlID();//获取对话框中控件ID号

if(nID==IDC_SCROLLBAR_RED){//或是滚动条产生的水平滚动消息

switch(nSBCode){

caseSB_LINEUP:

m_nRed--;//单击滚动条向上箭头

break;

caseSB_LINEDOWN:

m_nRed++;//单击滚动条向下箭头

break;

caseSB_PAGEUP:

m_nRed-=10;

break;

caseSB_PAGEDOWN:

m_nRed+=10;

break;

caseSB_THUMBTRACK:

m_nRed=nPos;

break;

}

if(m_nRed<0)m_nRed=0;

if(m_nRed>255)m_nRed=255;

m_scrollRed.SetScrollPos(m_nRed);

}

Invalidate();//使对话框无效,强迫系统重绘对话框

CDialog:

:

OnVScroll(nSBCode,nPos,pScrollBar);

}

用MFCClassWizard为CEx_CtrlsDlg类映射WM_CTLCOLOR消息,并添加下列代码:

HBRUSHCEx_CtrlsDlg:

:

OnCtlColor(CDC*pDC,CWnd*pWnd,UINTnCtlColor)

{

//HBRUSHhbr=CDialog:

:

OnCtlColor(pDC,pWnd,nCtlColor);

UpdateData(TRUE);

COLORREFcolor=RGB(m_nRed,m_nGreen,m_nBlue);

m_Brush.Detach();//使画刷和对象分离

m_Brush.CreateSolidBrush(color);//创建颜色画刷

pDC->SetBkColor(color);//设置背景颜色

return(HBRUSH)m_Brush;//返回画刷句柄,以便系统使此画刷绘制对话框

}

编译运行并测试。

5.写出实验报告

分析上述运行结果以及思考与练习,写出实验报告。

思考与练习

(1)若将控制绿色和蓝色颜色分量的滑动条全部换成滚动条,则代码应如何修改?

(2)若将CEx_CtrlsDlg对话框中的列表框换成静态文本,并用于显示信息,则应如何实现?

实验十二菜单、工具栏和状态栏

实验目的和内容

(1)创建一个单文档应用程序Ex_SDI。

在“查看”菜单下添加一个子菜单“鼠标位置”,ID为ID_VIEW_MOUSE,当选择该菜单命令后,鼠标当前的位置显示到状态栏上,同时该菜单项呈选中状态。

再次选择该菜单命令,状态栏不再显示当前鼠标位置,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高中教育 > 高中教育

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1