visual c++ 程序设计实验指导.docx

上传人:b****5 文档编号:5608647 上传时间:2022-12-29 格式:DOCX 页数:47 大小:122.55KB
下载 相关 举报
visual c++ 程序设计实验指导.docx_第1页
第1页 / 共47页
visual c++ 程序设计实验指导.docx_第2页
第2页 / 共47页
visual c++ 程序设计实验指导.docx_第3页
第3页 / 共47页
visual c++ 程序设计实验指导.docx_第4页
第4页 / 共47页
visual c++ 程序设计实验指导.docx_第5页
第5页 / 共47页
点击查看更多>>
下载资源
资源描述

visual c++ 程序设计实验指导.docx

《visual c++ 程序设计实验指导.docx》由会员分享,可在线阅读,更多相关《visual c++ 程序设计实验指导.docx(47页珍藏版)》请在冰豆网上搜索。

visual c++ 程序设计实验指导.docx

visualc++程序设计实验指导

 

《VisualC++程序设计》实验指导

海南软件职业技术学院

HainanSoftwareProfessionInstitute

(2005-2006学年度第二学期)

 

教师姓名:

季文天

系部:

软件工程系

授课专业:

软件技术

授课班级:

04软件技术(3)

 

实验一:

编制一个MFC应用程序

一、实验目的:

1.熟悉并掌握MFC基本应用程序结构

2.掌握MFC消息映射机制

3.掌握响应简单事件的方法

二、实验环境:

Windows2000Professional

VisualC++6.0Enterprise

三、实验内容

1、编写一个简单的MFC应用程序

四、试验步骤:

1、建立一个Win32工程,HelloMFC。

2、选择“工程”——〉“设置”菜单,选择包含MFC类库。

3、输入下列代码:

#include//MFC头文件

classCHelloApp:

publicCWinApp//声明应用程序类

{public:

virtualBOOLInitInstance();

};

CHelloApptheApp;//建立应用程序类的实例

classCMainFrame:

publicCFrameWnd//声明主窗口类

{public:

CMainFrame()

{//创建主窗口

Create(NULL,"我的窗口",WS_OVERLAPPEDWINDOW,CRect(0,0,400,300));

}

protected:

afx_msgvoidOnLButtonDown(UINTnFlags,CPointpoint);

DECLARE_MESSAGE_MAP()

};

//消息映射入口

BEGIN_MESSAGE_MAP(CMainFrame,CFrameWnd)

ON_WM_LBUTTONDOWN()//单击鼠标左键消息的映射宏

END_MESSAGE_MAP()

voidCMainFrame:

:

OnLButtonDown(UINTnFlags,CPointpoint)

{MessageBox("你好,我的VisualC++世界!

","问候",0);

CFrameWnd:

:

OnLButtonDown(nFlags,point);

}

//每当应用程序首次执行时都要调用的初始化函数

BOOLCHelloApp:

:

InitInstance()

{m_pMainWnd=newCMainFrame();

m_pMainWnd->ShowWindow(m_nCmdShow);

m_pMainWnd->UpdateWindow();

returnTRUE;

}

五、实验报告

依据本节实验内容书写实验报告,包括如下内容:

(1)实验目的

(2)实验环境

(3)操作步骤

(4)遇到的问题及解决方法

(5)回答实验问题

(6)实验心得和体会

实验二:

编辑框控件

一、实验目的:

1.掌握编辑控件风格

2.掌握编辑控件单行、多行风格

3.掌握编辑控件数据的获取

二、实验环境:

Windows2000Professional

VisualC++6.0Enterprise

三、实验内容

1、使用静态文本、组框、编辑框以及按钮等控件,设计界面。

用户在“成绩1”、“成绩2”和“成绩3”编辑框中输入成绩后,单击[计算平均分]按钮,将显示出这三个成绩的平均分。

四、试验步骤:

(1)打开前面的Ex_CommCtrls。

(2)向应用程序中添加一个对话框资源,打开属性对话框将其标题改为“使用编辑框”,ID号改为IDD_EDIT。

(3)用编辑器为对话框添加如下表所示的一些控件。

(4)双击对话框模板或按Ctrl+W快捷键,为对话框资源IDD_EDIT创建一个对话框类CEditDlg。

(5)打开ClassWizard的MemberVariables标签,在Classname中选择CEditDlg,选中所需的控件ID号,双击鼠标或单击AddVariables按钮。

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

(6)切换到ClassWizard的MesssageMaps标签页,为CEditDlg增加WM_INITDIALOG的消息映射,并添加下列代码:

BOOLCEditDlg:

:

OnInitDialog()

{CDialog:

:

OnInitDialog();

m_strAve="0.00";

UpdateData(FALSE);//将成员变量数据传给控件,并在控件中显示

returnTRUE;

}

(7)用ClassWziard为按钮IDC_BUTTON1添加BN_CLICKED的消息映射,并增加下列代码:

voidCEditDlg:

:

OnButton1()

{UpdateData();//将控件显示的数据传给成员变量

doubleave=(double)(m_nScore1+m_nScore2+m_nScore3)/3.0;

m_strAve.Format("%6.2f",ave);

UpdateData(FALSE);//将成员变量数据传给控件并显示

}

(8)定位到CEx_CommCtrlsDlg:

:

OnButton1函数处,修改代码如下:

if(nID==IDC_RADIO1){

CEditDlgdlg;

dlg.DoModal();

}

(9)在Ex_CommCtrlsDlg.cpp文件的开始处,增加包含CEditDlg的头文件。

#include“EditDlg.h”

(10)编译运行并测试。

五、实验报告

依据本节实验内容书写实验报告,包括如下内容:

(1)实验目的

(2)实验环境

(3)操作步骤

(4)遇到的问题及解决方法

(5)回答实验问题

(6)实验心得和体会

实验三:

列表控件

一、实验目的:

1.掌握列表控件的风格

2.掌握列表控件通知消息

3.掌握列表控件的几种基本操作

二、实验环境:

Windows2000Professional

VisualC++6.0Enterprise

三、实验内容

1、将一个SCORE结构(含有三门成绩的数据成员)数据和列表框中每一个学生姓名列表关联起来。

用户单击[添加记录]按钮时,学生成绩记录中的“姓名”被添加在列表框中,该学生的成绩与该列表项关联。

单击[删除记录]时,列表框中当前选择项被删除,相关联的数据所占的内容空间被释放。

任何时候选中列表框中某个学生,相应的记录数据都被显示出来

四、试验步骤:

(1)打开前面创建的基于对话框应用程序程序项目Ex_CommCtrls。

(2)向应用程序中添加一个对话框资源IDD_LISTBOX,标题定为“使用列表框”,用ClassWizard为此对话框类定义为CListBoxDlg。

(3)删除原来的Cancel按钮,用编辑器为对话框添加如下表所示的控件。

(4)打开ClassWizard的MemberVariables页面,在Classname中选择CListBoxDlg,选中所需的控件ID号,双击鼠标或单击AddVariables按钮。

(5)切换到ClassWizard的MesssageMaps标签页,为按钮IDC_DATA_ADD添加BN_CLICKED的消息映射,增加代码:

voidCListBoxDlg:

:

OnDataAdd()

{UpdateData(TRUE);

if(m_strName.IsEmpty())//判断m_strName是否为空

{MessageBox("姓名不能为空!

");

return;}

m_strName.TrimLeft();//裁剪m_strName左边的空格

m_strName.TrimRight();//裁剪m_strName右边的空格

if((m_List.FindString(-1,m_strName))!

=LB_ERR)

{MessageBox("列表框中已有相同姓名,不能添加!

");

return;}

intnIndex=m_List.AddString(m_strName);//向列表框添加学生姓名

//将该学生成绩与新增的列表项关联起来

SCOREdata;

data.score1=m_nScore1;

data.score2=m_nScore2;

data.score3=m_nScore3;

m_List.SetItemDataPtr(nIndex,newSCORE(data));

}

(6)用ClassWizard为按钮IDC_DATA_DEL添加BN_CLICKED的消息映射,增加代码:

voidCListBoxDlg:

:

OnDataDel()

{intnIndex=m_List.GetCurSel();//获得当前选择项的索引

if(nIndex!

=LB_ERR)

{m_List.DeleteString(nIndex);//删除当前选择项

m_strName.Empty();

m_nScore1=m_nScore2=m_nScore3=0;

UpdateData(FALSE);

}

elseMessageBox("当前没有选择项或列表框操作失败!

");

}

(7)用ClassWizard为按钮IDC_LIST1添加LBN_SELCHANGE的消息映射,增加代码:

voidCListBoxDlg:

:

OnSelchangeList1()

{intnIndex=m_List.GetCurSel();

if(nIndex!

=LB_ERR)

{m_List.GetText(nIndex,m_strName);

SCORE*data=(SCORE*)m_List.GetItemDataPtr(nIndex);

m_nScore1=data->score1;

m_nScore2=data->score2;

m_nScore3=data->score3;

UpdateData(FALSE);

}

}

(8)用ClassWizard为对话框添加WM_DESTROY的消息映射,增加代码:

voidCListBoxDlg:

:

OnDestroy()//此消息是当对话框关闭时发送的

{for(intnIndex=m_List.GetCount()-1;nIndex>=0;nIndex--)

{//删除所有与列表项相关联的SCORE结构数据,并释放内存

delete(SCORE*)m_List.GetItemDataPtr(nIndex);

}

CDialog:

:

OnDestroy();//关闭对话框

}

(9)打开ListBoxDlg.h源文件,在类CListBoxDlg定义的public处添加下列代码:

public:

structSCORE

{intscore1;

intscore2;

intscore3;

};

(10)定位到CEx_CommCtrlsDlg:

:

OnButton1函数处,修改代码如下:

if(nID==IDC_RADIO2)

{CListBoxDlgdlg;

dlg.DoModal();

}

(11)在Ex_CommCtrlsDlg.cpp文件的开始处,增加包含CListBoxDlg的头文件。

#include“ListBoxDlg.h”

(12)编译运行并测试。

五、实验报告

依据本节实验内容书写实验报告,包括如下内容:

(1)实验目的

(2)实验环境

(3)操作步骤

(4)遇到的问题及解决方法

(5)回答实验问题

(6)实验心得和体会

实验四:

组合控件实例

一、实验目的:

1.了解组合控件风格

2.掌握组合控件通知消息

3.掌握组合控件几种基本操作

二、实验环境:

Windows2000Professional

VisualC++6.0Enterprise

三、实验内容

1、根据用户从组合框中选择的填充样式,在对话框中绘制一个矩形区域

四、试验步骤:

(1)打开前面创建的基于对话框应用程序程序项目Ex_CommCtrls。

(2)向应用程序中添加一个对话框资源IDD_COMBO,标题定为“使用组合框”,用ClassWizard为此对话框类定义为CComboDlg。

(3)删除原来的Cancel按钮,用编辑器为对话框添加控件。

(4)打开ClassWizard的MemberVariables标签,为组合框IDC_PATTERN增加成员变量m_Pattern,其类型为Control类的CComboBox。

(5)为CComboDlg类添加一个int类型的成员变量m_nDrawPattern。

(6)切换到ClassWizard的MesssageMaps标签页,为组合框IDC_PATTERN添加CBN_SELCHANGE(组合框中的当前选项发生改变)的消息映射,并增加下列代码:

voidCComboDlg:

:

OnSelchangePattern()

{intnIndex=m_Pattern.GetCurSel();//获得当前选项的索引

if(nIndex!

=CB_ERR)

{m_nDrawPattern=m_Pattern.GetItemData(nIndex);

//获得与当前选项相关联的数据

Invalidate();//强制系统调用OnPaint函数重新绘制

}

}

(7)用ClassWizard为对话框添加WM_PAINT的消息映射,并增加下列代码:

voidCComboDlg:

:

OnPaint()

{CPaintDCdc(this);//devicecontextforpainting(绘图所必须的设备环境)

CWnd*pWnd=GetDlgItem(IDC_DRAW);//获得控件IDC_DRAW的窗口指针

pWnd->UpdateWindow();//避免系统自动重绘

CDC*pDC=pWnd->GetDC();//获得所需要的绘图设备环境

CBrushdrawBrush;//定义一个画刷

drawBrush.CreateHatchBrush(m_nDrawPattern,RGB(0,0,0));//创建画刷

CBrush*pOldBrush=pDC->SelectObject(&drawBrush);

//将画刷选入当前设备环境中

CRectrcClient;//定义一个CRect变量

pWnd->GetClientRect(rcClient);//获得窗口客户区大小

pDC->Rectangle(rcClient);//用当前画刷绘制一个矩形区域

pDC->SelectObject(pOldBrush);//恢复设备环境原来的画刷设置

}

(8)用ClassWizard为对话框添加WM_INITDIALOG的消息映射,增加代码:

BOOLCComboDlg:

:

OnInitDialog()

{CDialog:

:

OnInitDialog();

CStringstr[6]={"水平线","竖直线","向下斜线","向上斜线","十字线","交叉线"};

intnIndex;

for(inti=0;i<6;i++)

{

nIndex=m_Pattern.AddString(str[i]);

m_Pattern.SetItemData(nIndex,i);

}

m_Pattern.SetCurSel(0);

m_nDrawPattern=0;

returnTRUE;

}

(9)定位到CEx_CommCtrlsDlg:

:

OnButton1函数处,修改代码如下:

if(nID==IDC_RADIO3)

{

CComboDlgdlg;

dlg.DoModal();

}

(10)在Ex_CommCtrlsDlg.cpp文件的开始处,增加包含CComboDlg的头文件。

#include“ComboDlg.h”

(11)编译运行并测试。

五、实验报告

依据本节实验内容书写实验报告,包括如下内容:

(1)实验目的

(2)实验环境

(3)操作步骤

(4)遇到的问题及解决方法

(5)回答实验问题

(6)实验心得和体会

实验五:

滚动条、滑动条和旋转按钮

一、实验目的:

1.掌握滚动条、滑动条和旋转按钮的风格

2.掌握滚动条、滑动条和旋转按钮的通知消息

3.掌握滚动条、滑动条和旋转按钮的基本操作

二、实验环境:

Windows2000Professional

VisualC++6.0Enterprise

三、实验内容

1、用滚动条、滑动条和旋转按钮控件分别来调整RGB的三个颜色分量,根据指定的颜色填充一个矩形区域。

四、试验步骤:

(1)打开前面创建的基于对话框应用程序程序项目Ex_CommCtrls。

(2)向应用程序中添加一个对话框资源IDD_SCROLL,标题定为“使用滚动条、旋转按钮控件和滑动条”,用ClassWizard为此对话框类定义为CScrollDlg。

(3)删除原来的Cancel按钮,用编辑器为对话框添加如下表所示的一些控件。

(4)打开ClassWizard的MemberVariables标签,在Classname中选择CScrollDlg,选中所需的控件ID号,双击鼠标或单击AddVariables按钮。

依次为下列控件增加成员变量。

(5)切换到ClassWizard的MesssageMaps标签页,为编辑框IDC_EDIT1、IDC_EDIT2和IDC_EDIT3添加EN_CHANGE的消息映射,使用它们的消息处理函数名都设为OnChangeEdit,并增加下列代码:

voidCScrollDlg:

:

OnChangeEdit()

{if(!

m_bEditOK)return;

UpdateData();

m_Scroll.SetScrollPos(m_RValue);

m_Slider.SetPos(m_GValue);

Draw();

}

(6)用ClassWizard为对话框添加WM_PAINT的消息映射,增加代码:

voidCScrollDlg:

:

OnPaint()

{CPaintDCdc(this);//devicecontextforpainting

CWnd*pWnd=GetDlgItem(IDC_DRAW);

pWnd->UpdateWindow();

Draw();

}

(7)用ClassWizard为对话框添加WM_INITDIALOG的消息映射,增加代码:

BOOLCScrollDlg:

:

OnInitDialog()

{CDialog:

:

OnInitDialog();

//设置滚动条和滑动条的范围和当前位置

m_Scroll.SetScrollRange(0,255);

m_Scroll.SetScrollPos(m_RValue);

m_Slider.SetRange(0,255);

m_Slider.SetPos(m_GValue);

//设置旋转按钮的范围

m_Spin.SetRange(0,255);

UpdateData(FALSE);//将数据传给控件

m_bEditOK=TRUE;

returnTRUE;

}

(8)用ClassWizard为对话框添加WM_HSCROLL的消息映射,增加代码:

voidCScrollDlg:

:

OnHScroll(UINTnSBCode,UINTnPos,CScrollBar*pScrollBar)

{intnID=pScrollBar->GetDlgCtrlID();

if(nID==IDC_SLIDER1)//是滑动条产生水平滚动消息

{m_GValue=m_Slider.GetPos();//获得滑动条当前的位置}

if(nID==IDC_SCROLLBAR1)//是滚动条条产生水平滚动消息

{switch(nSBCode)

{caseSB_LINELEFT:

m_RValue--;break;

caseSB_LINERIGHT:

m_RValue++;break;

caseSB_PAGELEFT:

m_RValue-=10;break;

caseSB_PAGERIGHT:

m_RValue+=10;break;

caseSB_THUMBTRACK:

m_RValue=nPos;break;

}

if(m_RValue<0)m_RValue=0;

if(m_RValue>255)m_RValue=255;

m_Scroll.SetScrollPos(m_RValue);

}

UpdateData(FALSE);

Draw();

CDialog:

:

OnHScroll(nSBCode,nPos,pScrollBar);

}

(9)将项目工作区切换到ClassView页面,用鼠标右击“CScrollDlg”项,在弹出的快捷菜单中选中“AddMemberFunction”,将要增加的函数名设为Draw,函数类型为void,并添加下列代码:

voidCScrollDlg:

:

Draw()

{CWnd*pWnd=GetDlgItem(IDC_DRAW);

CDC*pDC=pWnd->GetDC();//获得窗口当前的设备环境指针

CBrushdrawBrush;//定义画刷变量

drawBrush.CreateSolidBrush(RGB(m_RValue,m_GValue,m_BValue));

//创建一个填充色画刷。

/

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

当前位置:首页 > 工程科技 > 能源化工

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

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