VC超级经典实例(共77页)

上传人:6**** 文档编号:48657001 上传时间:2022-01-13 格式:DOC 页数:79 大小:907KB
收藏 版权申诉 举报 下载
VC超级经典实例(共77页)_第1页
第1页 / 共79页
VC超级经典实例(共77页)_第2页
第2页 / 共79页
VC超级经典实例(共77页)_第3页
第3页 / 共79页
资源描述:

《VC超级经典实例(共77页)》由会员分享,可在线阅读,更多相关《VC超级经典实例(共77页)(79页珍藏版)》请在装配图网上搜索。

1、精选优质文档-倾情为你奉上实 验实验0 Visual C+ 6.0中文版开发环境实验目的和要求(1)熟悉Visual C+ 6.0的开发环境(工具栏及各种窗口)。(2)显示和隐藏工具栏。(3)用应用程序向导创建一个控制台应用项目Ex_Hello。(4)输入并编译一个新的C+程序。实验准备和说明(1)在第一次上课时进行本次实验。(2)熟悉Windows 2000操作系统的环境和基本操作。(3)熟悉实验报告的书写格式,这里给出下列建议:实验报告采用A4大小纸张,封面一般包含实验目次、实验题目、班级、姓名、日期和机构名称。报告内容一般包括实验目的和要求、实验步骤、实验思考和总结。需要指出的是,实验步

2、骤不是书本内容的复制,而是自己结合实验内容进行探索的过程。教师也可根据具体情况提出新的实验报告格式。(4)阅读下列关于Visual C+的说明:Visual C+是Microsoft公司推出的目前使用极为广泛的基于Windows平台的可视化编程环境。Visual C+ 6.0是在以往版本不断更新的基础上形成的,由于其功能强大、灵活性好、完全可扩展以及具有强有力的Internet支持,在各种C+语言开发工具中脱颖而出,成为目前最为流行的C+语言集成开发环境。Visual C+ 6.0分为标准版、专业版和企业版3种,但其基本功能是相同的。Visual C+ 6.05中文版是在Visual C+ 6

3、.0基础上进行汉化的一个版本,本书以此版本作为编程环境。为统一起见,本书仍称为Visual C+ 6.0,并以Windows 2000作为操作系统。实验内容和步骤1启动Windows 2000操作系统打开计算机,启动Windows 2000操作系统。2创建工作文件夹图0.1 显示提示对话框创建Visual C+ 6.0的工作文件夹“Visual C+程序实验”(表示自己的文件夹),在文件夹“实验”下再创建一个文件夹“实验0”,下一次实验就在“实验”文件夹下创建子文件夹“实验1”,依此类推。以后实验所创建的工程都在相应的文件夹下,这样既便于管理,又容易查找。3启动Visual C+ 6.0选择“

4、开始”“程序”Microsoft Visual Studio 6.0Microsoft Visual C+ 6.0,运行Visual C+ 6.0。第一次运行时,将显示“当时的提示”对话框。单击“下一个提示”按钮,可看到有关各种操作的提示。如果取消选中“再启动时显示提示”复选框,那么下一次运行Visual C+ 6.0,将不再出现此对话框,如图0.1所示。4认识开发环境界面工具栏菜单栏项目工作区窗口输出窗口文档窗口输出窗口标签标题栏状态栏单击“结束”按钮关闭此对话框,进入Visual C+ 6.0开发环境。开发环境界面由标题栏、菜单栏、工具栏、项目工作区窗口、文档窗口、输出窗口和状态栏等组成,

5、如图0.2所示。图0.2 Visual C+ 6.0中文版开发环境标题栏一般有“最小化”、“最大化” 或“还原” 以及“关闭” 按钮,单击“关闭”按钮将退出开发环境。标题栏上还显示出当前被操作的文档的文件名。菜单栏包含了开发环境中几乎所有的命令,它为用户提供了文档操作、程序的编译、调试、窗口操作等一系列的功能。菜单中的一些常用命令还被排列在相应的工具栏上,以便用户更好地操作。项目工作区窗口包含用户项目的一些信息,包括:类(ClassView页面)、项目文件(FileView页面)和资源(ResourceView页面)等。在项目工作区窗口中的任何标题或图标处单击鼠标右键,都会弹出相应的快捷菜单,

6、包含当前状态下的一些常用操作。文档窗口一般位于开发环境中的右边,各种程序代码的源文件、资源文件、文档文件等都可以通过文档窗口显示出来。输出窗口一般出现在开发环境窗口的底部,包括编译(Build)、调试(Debug)、查找文件(Find in Files)等相关信息的输出。这些输出信息以多页面标签的形式出现在输出窗口中,例如“编译”页面标签显示的是程序在编译和连接时的进度及错误信息。状态栏一般位于开发环境的最底部,它用来显示当前操作状态、注释、文本光标所在的行列号等信息。5显示和隐藏工具栏显示或隐藏工具栏可以使用“定制”对话框或快捷菜单两种方式进行操作。(1)“定制”对话框方式操作步骤如下: 选

7、择“工具”菜单“定制”菜单项,弹出“定制”对话框,如图0.3所示。图0.3 “定制”对话框图0.4 工具栏的快捷菜单 单击“工具栏”标签项,将显示出所有的工具栏名称,凡显示在开发环境上的工具栏名称前面均带有选中标记。 单击“编译”工具栏名称,复选框中带有选中标记,该工具栏将显示开发环境中。再单击“编译”工具栏名称,复选框的选中标记将去除,该工具栏从开发环境中消失。其他工具栏的显示和隐藏均可类似操作。(2)快捷菜单方式如果嫌上述操作不够便捷,那么可以在开发环境中工具栏或菜单栏处右击鼠标,将会弹出一个包含工具栏名称的快捷菜单,如图0.4所示,凡显示在开发环境上的工具栏,其相应的菜单项前面就会有选中

8、标记。对相应的工具栏进行选择将使其显示或隐藏。6工具栏的浮动与停泊Visual C+ 6.0的工具栏具有“浮动”与“停泊”功能。Visual C+ 6.0启动后,系统默认将常用工具栏“停泊”在主窗口的顶部。若将鼠标指针指向工具栏的非按钮区域,可以将工具栏拖放到主窗口的四周或中央。如果拖放到窗口的中央处,则工具栏成为“浮动”的工具窗口。窗口的标题就是工具栏的类型名称。拖放工具栏窗口的边或角可以改变其 形状。图0.5 浮动的“标准”工具栏例如,将鼠标指针指向“标准”工具栏的非按钮区域,按住鼠标左键不放,将其拖至屏幕中央,释放鼠标左键,观察变化。再将鼠标指针移至工具栏窗口的边界处,按住鼠标左键不放并

9、拖动,观察大小的变化。图0.5是“标准”工具栏浮动的状态,其大小已被拖放过。当然,浮动和停泊两种状态可以进行切换。在“浮动”的工具窗口标题栏处双击鼠标左键或将其拖放到主窗口的四周,都能使其停泊在相应的位置处。在“停泊”工具栏的非按钮区域双击鼠标左键,可切换成“浮动”的工具窗口。7创建和编连控制台应用项目在Visual C+ 6.0中,用应用程序向导创建和编连一个控制台应用程序,可按下列步骤进行: 选择“文件”“新建”菜单命令,显示出“新建”对话框,如图0.6所示。图0.6 新建一个工程 选择“工程”标签,并从列表框中选中Win32 Console Application项。 在“工程”编辑框中

10、键入控制台应用程序项目名称Ex_Hello,并将项目文件夹定位到“D:Visual C+程序实验实验0”。 单击“确定”按钮,显示Win32应用程序向导对话框。第一步是询问项目类型,如图0.7所示。图0.7 控制台应用程序的第1步 选中A “Hello, World!” application项。单击“完成”按钮,系统将显示向导创建的信息,单击“确定”按钮将自动创建此应用程序。 默认时,项目工作区窗口显示的是ClassView页面,将所有内容展开,双击main项,在文档窗口中将main函数体中的"Hello World!n"改为"I Like Visual C+

11、6.0中文版!n",结果如图0.8所示。图0.8 修改代码说明:在输入字符和汉字时,要切换到相应的输入方法中,除了字符串和注释可以使用汉字外,其余一律采用英文字符输入。代码中,stdafx.h是每个应用程序所必有的预编译头文件,程序所用到的Visual C+头文件包含均添加到这个文件中。 单击编译工具条上的生成工具按钮或直接按快捷键F7,系统开始对Ex_Hello进行编译、连接,同时在输出窗口中观察出现的内容,当出现:表示Ex_Hello.exe可执行文件已经正确无误地生成了。图0.9 运行结果 单击编译工具条上的运行工具按钮或直接按快捷键Ctrl+F5,就可以运行刚刚生成的Ex_H

12、ello.exe了,结果如图0.9所示。8输入并编译一个新的C+程序 选择“文件”“关闭工作区”菜单,关闭原来的项目。 按上面的方法创建一个Win32 Console Application项目Ex_Simple,在向导的第一步中选择An empty project类型。 再次选择“文件”“新建”菜单命令,显示出“新建”对话框“文件”页面,如图0.10所示。图0.10 “新建”对话框的“文件”页面 在文件类型列表中选择C+ Source File,然后在“文件”框中输入要创建的文件名Ex_Simple,文件扩展名可以不必输入,系统会自动添加cpp扩展名(cpp是C Plus Plus的缩写,即

13、C+的意思)。单击“确定”按钮,在打开的文档窗口中输入下列C+代码:/*程序Ex_Simple,一个简单的C+程序*/ C+程序的基本结构 #include <iostream.h>void main()double r, area;/ 声明变量cout<<"输入圆的半径:"/ 显示提示信息cin>>r;/ 从键盘上输入变量r的值area = 3.14159 * r * r;/ 计算面积cout<<"圆的面积为:"<<area<<"n" / 输出面积 此时在文档窗

14、口中所有代码的颜色都发生改变,这是Visual C+ 6.0的文本编辑器所具有的语法颜色功能如图0.11所示。其中,绿色表示注释,蓝色表示关键词等。图0.11 编辑器的代码语法颜色功能 按快捷键F7,系统开始编译。编译后,再按快捷键Ctrl+F5就可运行了。说明:对于C/C+语言工程项目的创建,凡没有特别说明,均采用此方法。9退出Visual C+ 6.0退出Visual C+ 6.0有两种方式:一种是单击主窗口右上角的“关闭”按钮,另一种是选择FileExit菜单。10写出实验报告结合思考与练习题,写出实验报告。思考与练习(1)除工具栏可以浮动和停泊外,看看还有哪些窗口可以这样操作?(2)经

15、过创建项目文件的实验,试总结出创建一个控制台应用项目的一般方法。实验1 Windows编程基础实验目的和要求创建一个Win32应用程序Ex_SDK,在程序中构造一个编辑框和一个按钮。编辑框用于输入一元二次方程的系数,各系数之间用逗号分隔,当单击“计算”按钮,获取方程系数,然后将求得的根通过TextOut显示在窗口客户区中。实验准备和说明(1)具备知识:简单的SDK编程基础。(2)准备本次上机所需要的程序。(3)创建本次实验工作文件夹“Visual C+程序实验实验1”实验内容和步骤1启动Visual C+ 6.0打开计算机,启动Visual C+ 6.0系统。2创建工程并添加代码 选择“文件”

16、“新建”菜单命令,打开应用程序向导,显示出“新建”对话框。单击“工程”标签,从列表框中选中Win32 Application(Win32 应用程序)项。在工程名称框中输入Win32应用程序项目名称Ex_SDK。单击浏览按钮.将工程定位到文件夹 “Visual C+ 6.0程序实验实验1”。 单击“确定”按钮继续。在向导第一步对话框中,选中An empty project(一个空的工程)项。单击“完成”按钮,系统将显示AppWizard(应用程序向导)的创建信息,单击“确定”按钮,系统将自动创建此应用程序。 再次选择“文件”“新建”菜单命令,显示出“新建”对话框。单击“文件”标签,在左边的列表框

17、中选择C+ Source File项,在右边的“文件”下的编辑框中输入Ex_SDK.cpp,单击“确定”按钮。 在打开的文档窗口中输入下面的代码:#include <windows.h>#include <math.h>#include <stdio.h>/ 求一元二次方程的根,函数返回根的个数int GetRoot(float a, float b, float c, double *root)double delta, deltasqrt;delta = b*b - 4.0 * a * c;if (delta<0.0) return 0;/ 无根d

18、eltasqrt = sqrt(delta);if (a!=0.0) root0 = (-b + deltasqrt)/(2.0 * a);root1 = (-b - deltasqrt)/(2.0 * a); elseif (b!=0.0) root0 = root1 = -c/b;elsereturn 0;if (root0 = root1) return 1;else return 2;char str80;LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM);/ 窗口过程int WINAPI WinMain (HINSTANCE h

19、Instance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) HWND hwnd ;/ 窗口句柄 MSG msg ;/ 消息 WNDCLASSwndclass ; / 窗口类 wndclass.style = CS_HREDRAW | CS_VREDRAW ; wndclass.lpfnWndProc = WndProc ; wndclass.cbClsExtra = 0 ; wndclass.cbWndExtra = 0 ;wndclass.hInstance = hInstance ; wndclass.hIcon =

20、LoadIcon (NULL, IDI_APPLICATION) ;wndclass.hCursor = LoadCursor (NULL, IDC_ARROW) ;wndclass.hbrBackground = (HBRUSH) GetStockObject (WHITE_BRUSH) ;wndclass.lpszMenuName = NULL ; wndclass.lpszClassName = "SDKWin"/ 窗口类名 if (!RegisterClass (&wndclass)/ 注册窗口 MessageBox (NULL, "窗口注册失败!

21、", "HelloWin", 0) ; return 0 ; / 创建窗口hwnd = CreateWindow ("SDKWin", / 窗口类名 "实验1Windows编程基础",/ 窗口标题 WS_OVERLAPPEDWINDOW, / 窗口样式 CW_USEDEFAULT, / 窗口最初的 x 位置 CW_USEDEFAULT, / 窗口最初的 y 位置 CW_USEDEFAULT, / 窗口最初的 x 大小 CW_USEDEFAULT, / 窗口最初的 y 大小 NULL, / 父窗口句柄 NULL, / 窗口菜单

22、句柄 hInstance, / 应用程序实例句柄 NULL) ; / 创建窗口的参数ShowWindow (hwnd, nCmdShow) ; / 显示窗口UpdateWindow (hwnd) ; / 更新窗口,包括窗口的客户区while (GetMessage (&msg, NULL, 0, 0) TranslateMessage (&msg) ;/ 转换某些键盘消息 DispatchMessage (&msg) ;/ 将消息发送给窗口过程,这里是WndProcreturn msg.wParam ;LRESULT CALLBACK WndProc (HWND hwn

23、d, UINT message, WPARAM wParam, LPARAM lParam)HDChdc;PAINTSTRUCTps;staticHWNDhwndButton, hwndEdit;charstrEdit80, strA380, strHint80;floata3;double root2;inti, j, k, m;switch (message)case WM_CREATE:/ 窗口创建产生的消息 hwndEdit = CreateWindow("edit", NULL, WS_CHILD|WS_VISIBLE|WS_BORDER,10, 60, 200,

24、 25, hwnd, NULL, NULL, NULL );hwndButton = CreateWindow("button", "计 算",WS_CHILD|WS_VISIBLE|BS_PUSHBUTTON,240, 60, 80, 25, hwnd, NULL, NULL, NULL );return 0 ; case WM_COMMAND:/ 命令消息,控件产生的通知代码在wParam的高字中if (HWND)lParam = hwndButton )&&( HIWORD(wParam) = BN_CLICKED ) / 获取编辑

25、框控件的内容,并将其转换成float数值 GetWindowText( hwndEdit, strEdit, 80); / 获取编辑框内容 / 分隔字符串 k = 0;m = 0; for (j=0; j<80; j+) if (strEditj = ',') k+;m = 0; else strAkm = strEditj;m+; for (i=0; i<3; i+) ai = (float)atof(strAi);/ 将字符串转换成float数值 int n = GetRoot(a0, a1, a2, root); if (n<1)strcpy(str,

26、"方程无根!") ; else sprintf(str,"方程的解为:%f, %f", root0, root1); InvalidateRect(hwnd, NULL, TRUE);case WM_PAINT:hdc = BeginPaint(hwnd, &ps);strcpy(strHint, "请输入一元二次方程的3个系数,中间用逗号分隔"); TextOut(hdc, 10, 40, strHint, strlen(strHint);TextOut(hdc, 10, 90, str, strlen(str);EndPa

27、int(hwnd, &ps);return 0 ; case WM_DESTROY:/ 当窗口关闭时产生的消息PostQuitMessage (0) ;return 0 ;return DefWindowProc (hwnd, message, wParam, lParam) ;/ 执行默认的消息处理3运行并测试编译并运行程序,在编辑框中填入一元二次方程的系数6、3、-9后,单击“计算”按钮,求解的结果就会显示出来,如图1.1所示。图1.1 Ex_SDK运行结果4写出实验报告结合思考与练习题,写出实验报告。思考与练习(1)分析上述给出的参考代码,比较和书中Ex_WinControl示例

28、代码有何不同?(2)构造一个编辑框和一个按钮,当单击按钮,用消息对话框将编辑框内容显示出来。实验2 常用控件(1)实验目的和要求(1)创建一个默认的对话框应用程序Ex_Ctrls,如图2.1所示。(2)设计一个如图2.2所示的“课程信息”对话框。图2.1 Ex_Ctrls对话框图2.2 “课程信息”对话框(3)实现功能:单击图2.1中的“课程信息”按钮,弹出“学生基本信息”对话框,单击“添加”按钮,对话框内容显示在图2.1中的列表框中。实验准备和说明(1)具备知识:静态控件、按钮、编辑框、旋转按钮控件、列表框和组合框控件。(2)创建本次实验工作文件夹“Visual C+程序实验实验2”。实验内

29、容和步骤1启动Visual C+ 6.0打开计算机,启动Visual C+ 6.0系统。2创建一个默认的对话框应用程序Ex_Ctrls 选择“文件”“新建”菜单,在弹出的“新建”对话框中选择“工程”页面,选择MFC AppWizard(exe),在工程框中输入Ex_Ctrls,并将工程文件夹定位到“Visual C+程序实验实验2”。 单击“确定”按钮,在出现的Step 1对话框中选择“基本对话(框)”应用程序类型,单击“完成”按钮。 在对话框编辑器中,单击对话框工具栏上的切换网格按钮,显示对话框网格,将对话框标题改为“使用控件”。 调整对话框的大小,删除对话框中间的“TODO: 在这里设置对

30、话控制。”静态文本控件和“确定”按钮控件,将“取消”按钮标题改为“退出”,并移至对话框的下方。 向对话框中添加组框(Group)控件,标题设为“添加”,然后调整其大小和位置。 添加一个按钮,标题设为“课程信息”,ID设为IDC_BUTTON_COURSE。 添加一个列表框,取其默认ID号,去掉Sort风格属性。3添加并设计“课程信息”对话框 按Ctrl+R快捷键,弹出“插入资源”对话框,在资源类型列表中选择Dialog,单击“新建”按钮。 将该对话框资源的ID设为IDD_COURSE,标题设为“课程信息”,字体设为“宋体,9号”。 将OK和Cancel按钮的标题改为“添加”和“取消”。 打开对

31、话框网格,参看图2.2的控件布局,为对话框添加如表2.1所示的一些控件。表2.1 课程信息对话框添加的控件添加的控件ID号标 题其 他 属 性编辑框(课程号)IDC_EDIT_COURSENO默认编辑框(课程名称)IDC_EDIT_COURSENAME默认组合框(所属专业)IDC_COMBO_SPECIAL默认组合框(课程类型)IDC_COMBO_TYPE默认编辑框(开课学期)IDC_EDIT_OPEN默认旋转按钮IDC_SPIN1Auto buddy、Set buddy integer、Right对齐,其余默认编辑框(课时数)IDC_EDIT_COURSEHOURS默认编辑框(学分)IDC_

32、EDIT_CREDIT默认 右击添加的课程类型的组合框控件,从弹出的快捷菜单中选择“属性”命令,将其属性对话框切换到Data页面,直接输入内容,输入一行后按Ctrl+Enter键添加另一行。结果如图2.3所示。图2.3 课程类型组合框内容输入 按Ctrl+W快捷键或双击对话框资源模板的空白处,为IDD_COURSE创建一个对话框类CCourseDlg。 打开ClassWizard的Member Variables页面,看Class name是否是CCourseDlg,选中所需的控件ID号,双击鼠标。依次为表2.2控件增加成员变量。表2.2 控件变量控件ID号变量类别变量类型变量名范围和大小ID

33、C_EDIT_COURSENOValueCStringm_strNOIDC_EDIT_COURSENAMEValueCStringm_strNameIDC_COMBO_SPECIALValueCStringm_strSpecialIDC_COMBO_SPECIALControlCComboBoxm_comboSpecialIDC_COMBO_TYPEValueCStringm_strTypeIDC_EDIT_OPENValueBYTEm_nOpenIDC_SPIN1ControlCSpinButtonCtrlm_spinOpenIDC_EDIT_COURSEHOURSValueintm_nHo

34、ursIDC_EDIT_CREDITValuefloatm_fCredit4添加CCourseDlg类代码 用MFC ClassWizard为CCourseDlg类添加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.AddStri

35、ng( "机械工程及其自动化" );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(

36、);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_

37、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( "所属专业:&q

38、uot;+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 )

39、; 在Ex_CtrlsDlg.cpp文件的前面添加CCourseDlg的头文件包含:#include "Ex_CtrlsDlg.h"#include "CourseDlg.h" 编译运行并测试。6写出实验报告分析上述运行结果以及思考与练习,写出实验报告。思考与练习(1)为CCourseDlg类添加一个公有型CString成员变量m_strOKText,当通过CCourseDlg类对象将m_strOKText设为“修改”,CCourseDlg对话框中的“添加”按钮标题变成“修改”,试编程实现。(2)由于每学期的一门课程学分一般不超过6个学分,因此若将学分编

40、辑框改为组合框,应如何修改和编程?实验3 常用控件(2)实验目的和要求(1)设计一个如图3.1所示的“学生基本信息”对话框。(2)在实验2的基础上,实现功能:在图2.1中的“课程信息”按钮下方添加一个“学生基本信息”按钮,单击该按钮,弹出“学生基本信息”对话框,单击“添加”按钮,学生基本信息显示在列表框中。(3)在CEx_CtrlsDlg对话框中添加一个滚动条和两个滑动条来调整对话框的背景颜色的3个分量:R(红色分量)、G(绿色分量)和B(蓝色分量),结果如图3.2所示。 图3.1 “学生基本信息”对话框图3.2 设置对话框背景颜色实验准备和说明(1)具备知识:滚动条、进展条、滑动条、时间和日

41、历控件。(2)创建本次实验工作文件夹“Visual C+程序实验实验3”。实验内容和步骤1在实验3的工作文件夹中复制Ex_Ctrls文件夹将本书实验2中的Ex_Ctrls文件夹复制到实验3的工作文件夹中。2启动Visual C+ 6.0启动Visual C+ 6.0系统。3创建并添加“学生基本信息”对话框 选择“文件”“打开工作区”菜单,将“Visual C+程序实验实验3Ex_Ctrls”文件夹中的Ex_Ctrls项目打开。 添加一个新的对话框资源,将ID号改为IDD_INPUT,标题为“学生基本信息”,将对话框字体改为“宋体,9号”。将OK和Cancel按钮标题改为“确定”和“取消”。 调

42、整对话框的大小,将“确定”和“取消”按钮移至对话框的下方,然后显示对话框网格。 参看图3.1,向对话框添加如表3.1所示的控件。表3.1 学生基本信息对话框添加的控件添加的控件ID号标 题其 他 属 性编辑框IDC_EDIT_NAME默认编辑框IDC_EDIT_NO默认单选按钮IDC_MAN男常规选项勾选“组”单选按钮IDC_WOMAN女编辑框IDC_EDIT_S1默认旋转按钮控件IDC_SPIN_S1Auto buddy、Right对齐编辑框IDC_EDIT_S2默认旋转按钮控件IDC_SPIN_S2Auto buddy、Set buddy integer、Right对齐编辑框IDC_EDI

43、T_S3默认旋转按钮控件IDC_SPIN_S3Auto bud0dy、Set buddy integer、Right对齐编辑框IDC_SPECIAL默认 双击对话框模板空白处,为该对话框模板创建一个对话框类CInputDlg。 在MFC ClassWizard的Member Variables页面中,确定Class name中是否已选择了CInputDlg,选中所需的控件ID号,双击鼠标或单击Add Variables按钮。依次为表3.2控件增加成员变量。表3.2 控件变量控件ID号变 量 类 别变 量 类 型变 量 名范围和大小IDC_EDIT_NAMEValueCStringm_strNa

44、me20IDC_EDIT_NOValueCStringm_strNO20IDC_MANValueintm_bMaleIDC_EDIT_S1Valueintm_fScore10.0 100.0IDC_SPIN_S1ControlCSpinButtonCtrlm_spinScore1IDC_EDIT_S2Valueintm_fScore20.0 100.0IDC_SPIN_S2ControlCSpinButtonCtrlm_spinScore2IDC_EDIT_S3Valueintm_fScore30.0 100.0IDC_SPIN_S3ControlCSpinButtonCtrlm_spinSc

45、ore3IDC_SPECIALValueCStringm_strSpecial 在MFC ClassWizard的Messsage Maps页面中,为CInputDlg添加WM_INITDIALOG消息映射,并添加下列代码:BOOL CInputDlg:OnInitDialog() CDialog:OnInitDialog();(CButton *)GetDlgItem(IDC_MAN)->SetCheck(TRUE); /设置单选按钮初始值m_spinScore1.SetRange( 0, 100 );/ 设置旋转按钮控件范围m_spinScore2.SetRange( 0, 100

46、);m_spinScore3.SetRange( 0, 100 );return TRUE; / return TRUE unless you set the focus to a control 用MFC ClassWizard为CInputDlg增加IDC_SPIN_S1控件的UDN_DELTAPOS消息映射,并添加下列代码:void CInputDlg:OnDeltaposSpinS1(NMHDR* pNMHDR, LRESULT* pResult) NM_UPDOWN* pNMUpDown = (NM_UPDOWN*)pNMHDR;UpdateData(TRUE);/ 将控件的内容保存

47、到变量中m_fScore1 += (float)pNMUpDown->iDelta * 0.5f;if (m_fScore1<0.0) m_fScore1 = 0.0f;if (m_fScore1>100.0) m_fScore1 = 100.0f;UpdateData(FALSE);/ 将变量的内容显示在控件中*pResult = 0; 打开IDD_EX_CTRLS_DIALOG对话框资源,在 “课程信息”按钮下方添加一个“学生基本信息”按钮,并将ID号设为IDC_BUTTON_STUINFO。 用MFC ClassWizard为按钮IDC_BUTTON_STUINFO添加

48、BN_CLICKED消息映射,并添加下列代码:void CEx_CtrlsDlg:OnButtonStuinfo() CInputDlg dlg;if (IDOK != dlg.DoModal() return;while(m_List.GetCount()!=0)m_List.DeleteString(0);CString strSex("男");if (dlg.m_bMale) strSex = "女"m_List.AddString( "姓 名:"+dlg.m_strName);m_List.AddString( "学

49、 号:"+dlg.m_strNo);m_List.AddString( "性 别:"+strSex);CString str;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文件的前面添加CInputDlg类的头文件包含:#include "Course

50、Dlg.h"#include "InputDlg.h" 编译运行并测试。结果如图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方位为V

51、ertical, 其他默认 用MFC ClassWizard为表3.4控件添加成员变量。表3.4 控件变量控件ID号变 量 类 别变 量 类 型变 量 名范围和大小IDC_SCROLLBAR_REDControlCScrollBarm_scrollRedIDC_SLIDER_GREENControlCSliderCtrlm_sliderGreenIDC_SLIDER_GREENValueintm_nBlueIDC_SLIDER_BLUEControlCSliderCtrlm_sliderBlueIDC_SLIDER_BLUEValueintm_nBlue 为CEx_CtrlsDlg类添加两个成

52、员变量,一个是int型m_nRed,用来设置颜色R、G、B中的红色分量,另一个是画刷CBrush类对象m_Brush,用来设置对话框背景所需要的画刷。 在CEx_CtrlsDlg:OnInitDialog函数中添加下列代码:BOOL CEx_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_scr

53、ollRed.SetScrollPos(m_nRed);return TRUE; / return TRUE unless you set the focus to a control 用MFC ClassWizard为CEx_CtrlsDlg类映射WM_VSCROLL消息,并添加下列 代码:void CEx_CtrlsDlg:OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar) int nID = pScrollBar->GetDlgCtrlID();/ 获取对话框中控件ID号if (nID = IDC_SCROLLBAR

54、_RED) / 或是滚动条产生的水平滚动消息switch(nSBCode)case SB_LINEUP:m_nRed-;/ 单击滚动条向上箭头break;case SB_LINEDOWN:m_nRed+;/ 单击滚动条向下箭头break;case SB_PAGEUP:m_nRed -= 10;break;case SB_PAGEDOWN:m_nRed += 10;break;case SB_THUMBTRACK:m_nRed = nPos;break;if (m_nRed<0) m_nRed = 0;if (m_nRed>255) m_nRed = 255;m_scrollRed.

55、SetScrollPos(m_nRed);Invalidate();/ 使对话框无效,强迫系统重绘对话框CDialog:OnVScroll(nSBCode, nPos, pScrollBar); 用MFC ClassWizard为CEx_CtrlsDlg类映射WM_CTLCOLOR消息,并添加下列代码:HBRUSH CEx_CtrlsDlg:OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) /HBRUSH hbr = CDialog:OnCtlColor(pDC, pWnd, nCtlColor);UpdateData(TRUE);COLORRE

56、F color = 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对话框中的列表框换成静

57、态文本,并用于显示信息,则应如何实现?实验4 列表控件和树控件实验目的要求(1) 创建一个对话框应用程序Ex_List,其主界面如图4.1所示。(2) 设计一个如图4.2所示的“学生课程成绩”对话框,创建并完善该对话框类CScoreDlg。 图4.1 Ex_List界面图4.2 “学生课程成绩”对话框(3)实现功能:单击图4.1中的“学生课程成绩”按钮,弹出“学生课程成绩”对话框,单击“添加”按钮,学生课程成绩添加到列表控件。若选中列表项,“修改”按钮由原来的禁用变成可用,单击“修改”按钮,则弹出的“学生课程成绩”对话框中的“添加”按钮标题变成“修改”,单击“学生课程成绩”对话框中的“修改”按

58、钮,该列表项的内容被修改。(4)按照教材“树控件”中的示例进行实验。实验准备和说明(1)具备知识:图像列表、列表控件和树控件。(2)创建本次实验工作文件夹“Visual C+程序实验实验4”。实验内容和步骤1启动Visual C+ 6.0打开计算机,启动Visual C+ 6.0系统。2创建对话框应用程序Ex_List,并设计其界面 选择“文件”“新建”菜单,在弹出的“新建”对话框中选择“工程”页面,选择MFC AppWizard(exe),在工程框中输入Ex_List,并将工程文件夹定位到“Visual C+程序实验实验4”。 单击“确定”按钮,在出现的Step 1对话框中选择“基本对话(框)”应用程序类型,单击“完成”按钮。 在对话框编辑器中,单击对话框工具栏上的切换网格按钮,显示对话框网格,将对话框标题改为“列表控件”。 调整对话框的大小,删除对话框中间的“TODO: 在这里设置对话控制。”静态文本控件和“确定”按钮控件,将“取消”按钮标题改为“退出”,并移至对话框的下方。 添加两个按钮,一个是“学生课

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!