windows程序设计实验报告.docx
- 文档编号:3198489
- 上传时间:2023-05-05
- 格式:DOCX
- 页数:13
- 大小:147.88KB
windows程序设计实验报告.docx
《windows程序设计实验报告.docx》由会员分享,可在线阅读,更多相关《windows程序设计实验报告.docx(13页珍藏版)》请在冰点文库上搜索。
windows程序设计实验报告
《Windows程序设计》
实验报告
实验室:
S306(308)
学院:
计算机科学与技术
专业:
计算机科学与技术
目录
实验一、熟悉visualc++的编程环境3
一、实验目的和要求:
3
二、实验内容、程序清单及运行结果:
3
1.编辑第一个C++程序3
2.用AppWizard建立一个MFCWindows应用3
3.编写简单的计算程序4
运行结果:
4
三、心得体会:
4
实验二、对话框的使用5
一、实验目的和要求:
5
二、实验内容、程序清单及运行结果5
实验步骤:
5
实验结果:
7
三、心得体会:
7
实验三、创建一个进程来运行一个应用程序8
一、实验要求和目的8
二、实验内容、程序清单及运行结果8
实验步骤:
8
实验结果:
9
三、实验心得9
实验四、调整线程优先级10
一、实验要求和目的10
二、实验内容、程序清单及运行结果10
实验步骤:
10
实验结果:
11
三、实验心得11
实验一、熟悉visualc++的编程环境
一、实验目的和要求:
1.了解和使用VC集成开发环境
2.熟悉VC环境的基本命令和功能键,
3.熟悉常用的功能菜单命令
4.学习使用VC++环境的帮助
5.学习完整的C++程序开发过程
6.理解简单的C++程序结构
7.了解用VisualC++开发WindowsMFC应用程序的过程
二、实验内容、程序清单及运行结果:
1.编辑第一个C++程序
源程序代码:
//helloworldexample
#include
intmain(){
cout<<"hello!
"< return0;//正常返回 } 运行结果: 2.用AppWizard建立一个MFCWindows应用 在窗口中输出"Hello,World! ",修改OnDraw函数的定义,在最后一行加一句: pDC->TextOut(50,50,"Hello,World"); 运行结果: 3.编写简单的计算程序 输入圆的半径,计算圆的周长和面积并输出。 源程序代码: //该程序让用户输入圆的半径Radius,输出圆的周长Perimeter和面积Area #include #include constdoublePI=3.14159;//定义一个常量PI intmain(){ intradius; doubleperimeter,area; cout<<"Pleaseinputtheradius: "; cin>>radius; perimeter=2*PI*radius;//周长=2πR area=PI*radius*radius;//面积=πR2 cout<<"Theperimeterofthecircle: "< cout<<"Theareaofthecircle: "< return0; } 运行结果: 三、心得体会: 通过本次实验我了解了VC集成开发环境及基本命令、功能键和功能菜单命令,学会了使用VC++环境的帮助,理解了完整的C++程序开发过程及简单的C++程序结构,了解用VisualC++开发WindowsMFC应用程序的过程. 实验二、对话框的使用 一、实验目的和要求: 掌握Visualc++中对话框的使用 二、实验内容、程序清单及运行结果 使用资源编辑器编辑对话框在Windows开发中弹出对话框是一种常用的输入/输出手段,同时编辑好的对话框可以保存在资源文件中。 VisualC++提供了对话框编辑工具,利用编辑工具可以方便的添加各种控件到对话框中,而且利用ClassWizard可以方便的生成新的对话框类和映射消息。 实验步骤: 1)使用AppWizard生成一个基于对话框的工程,工程名为DlgDemo,其他均选择VC的默认摄制。 2)在对话框资源编辑器中删除VC自动生成的[确定][取消]按钮以及Static控件. 3)给对话框添加按钮[显示模态对话框],ID更改IDC_MODAL,用来显示一个模态对话框;给对话框添加按钮[显示非模态对话框],ID更改IDC_MODALESS,用来显示一个非模态对话框;给对话框添加一个编辑控件和Static控件。 4)在资源编辑器中添加两个对话框资源IDD_MODAL和IDD_MODALESS. 5)用ClassWizard为对话框IDD_MODAL添加一个对话框类CmodalDlg。 6)为CdlgDemoDlg类的[显示模态对话框]按钮添加消息处理函数如下: voidCDlgDemoDlg: : OnModal() { CModalDlgdlg; dlg.DoModal(); } 在DlgDemoDlg.cpp文件中加入如下CmodalDlg类的定义文件: #include"ModalDlg.h" 7)使用ClassWizard给对话框IDD_MODALESS添加一个对话框类CmodalessDlg. 8)给CdlgDemoDlg类添加一个成员变量m_pModalessDlg. private: CModalessDlg*m_pModalessDlg; 在CdlgDemoDlg类的构造函数中加入如下代码: CDlgDemoDlg: : CDlgDemoDlg(CWnd*pParent/*=NULL*/) : CDialog(CDlgDemoDlg: : IDD,pParent) { //{{AFX_DATA_INIT(CDlgDemoDlg) //NOTE: theClassWizardwilladdmemberinitializationhere //}}AFX_DATA_INIT //NotethatLoadIcondoesnotrequireasubsequentDestroyIconinWin32 m_hIcon=AfxGetApp()->LoadIcon(IDR_MAINFRAME); m_pModalessDlg=NULL; } 在DlgDemoDlg.h文件中加上如下语句: #include"ModalessDlg.h" 9)在CdlgDemoDlg类中给[显示非模态对话框]按钮添加消息映射函数如下: voidCDlgDemoDlg: : OnModaless() { m_pModalessDlg=newCModalessDlg(); //检查指针是否有效 if(m_pModalessDlg! =NULL) { BOOLret=m_pModalessDlg->Create(IDD_MODALESS,this); if(! ret) AfxMessageBox("创建非模态对话框失败"); m_pModalessDlg->ShowWindow(SW_SHOW); } else AfxMessageBox("创建非模态对话框失败"); } 10)给CdlgDemoDlg类映射WM_DESTROY消息,在WM_DESTROY消息的处理函数OnDestroy中小毁非模态对话框指针。 voidCDlgDemoDlg: : OnDestroy() { CDialog: : OnDestroy(); if(m_pModalessDlg) { m_pModalessDlg->DestroyWindow(); m_pModalessDlg=NULL; } } 编译运行程序。 实验结果: 三、心得体会: 通过此次实验掌握了在掌握了Visualc++中对话框的使用,在VisualC++利用对话框编辑工具,学会了添加各种控件到对话框中。 学会利用ClassWizard可以方便的生成新的对话框类和映射消息。 实验三、创建一个进程来运行一个应用程序 一、实验要求和目的 掌握CreateProcess函数各个参数的使用方法. 二、实验内容、程序清单及运行结果 使用该CreateProcess函数创建一个进程(通过调用Windows配备的应用程序附件如calc.exe等体现) 实验步骤: 1)使用VisualC++创建一个单文档GUI应用程序项目; 可以在New–Projects选项卡上,选Win32Application。 在接下来的对话框中,选“Atypical“HelloWorld! ”application”。 2)在应用程序菜单中添加“运行”→“计算器”菜单(设“计算器”子菜单名为ID_RUN_CALC); 3)添加鼠标点击ID_RUN_CALC菜单的事件处理代码。 然后在相应的函数中写入相应代码,如: STARTUPINFOsi={sizeof(si)}; TCHARszPath[MAX_PATH]=TEXT("C: \\WINNT\\system32\\calc.exe"); //计算器程序文件也可能在Windows目录下。 SECURITY_ATTRIBUTESsaProcess,saThread; //定义进程对象和线程对象的安全性属性 PROCESS_INFORMATIONpiProcessB; //定义创建进程的信息 saProcess.nLength=sizeof(saProcess); saProcess.lpSecurityDescriptor=NULL; saProcess.bInheritHandle=TRUE; //设置进程安全属性 saThread.nLength=sizeof(saThread); saThread.lpSecurityDescriptor=NULL; saThread.bInheritHandle=FALSE; //设置线程安全属性 CreateProcess(NULL,szPath,&saProcess,&saThread,FALSE,0,NULL,NULL,&si,&piProcessB); //上述代码可以简化,可将saProcess和saThread参数均设置为NULL。 4)书写完毕,进行build,然后execute 点击“运行”→“计算器”菜单,将创建一个进程来运行计算器应用程序。 实验结果: 三、实验心得 通过本次实验,我学会了使用CreateProcess函数创建一个进程,并且掌握了CreateProcess函数各个参数的使用方法。 在实验的过程中,由于在修改文件的时候忘了修改路径,导致运行不出最终结果,最后在同学的帮助下才找到原因所在,得到了实验的最终结果。 实验四、调整线程优先级 一、实验要求和目的 掌握线程优先级的处理。 二、实验内容、程序清单及运行结果 对于一个多线程应用程序,通过调用SetProcessPriorityBoost函数来禁止系统动态调整该进程中所有线程的优先级;通过调用SetThreadPriority函数(也可以结合使用SetPriorityClass函数),来调整各线程的优先级;然后通过一个进度条来显示各线程的运行进度;或者通过调用GetThreadTimes函数来显示各线程获得的CPU时间。 实验步骤: 1)使用VisualC++创建一个支持多线程的单文档GUI应用程序项目; 可以在New–Projects选项卡上,选Win32Application。 在接下来的对话框中,选“Atypical“HelloWorld! ”application”。 在ProjectSettings对话框,C/C++选项卡上,CodeGeneration类别,从Userun-timelibrary组合框中选定“MultithreadedDLL”。 2)创建线程函数,来完成一些工作。 如: unsigned__stdcallThreadFunc(PVOIDpvParam){ DWORDi=0; while(i<100000000) i++; _endthreadex(0); return(0); } 3)禁止系统动态调整该进程中所有线程的优先级。 如: SetProcessPriorityBoost(GetCurrentProcess(),FALSE); 4)创建多个新线程。 如: HANDLEthread1,thread2,thread3; unsignedthreadID; thread1=(HANDLE)_beginthreadex(NULL,0,&ThreadFunc,NULL,0,&threadID); thread2=(HANDLE)_beginthreadex(NULL,0,&ThreadFunc,NULL,0,&threadID); thread3=(HANDLE)_beginthreadex(NULL,0,&ThreadFunc,NULL,0,&threadID); 注意: 要先#include 5)调整各线程的优先级。 如: SetThreadPriority(thread1,THREAD_PRIORITY_LOWEST); SetThreadPriority(thread2,THREAD_PRIORITY_NORMAL); SetThreadPriority(thread3,THREAD_PRIORITY_HIGHEST); 6)通过进度条来显示各线程的运行进度;或者通过调用GetThreadTimes函数来显示各线程获得的CPU时间。 如: 首先: FILETIMEftCreationTime,ftExitTime,ftKernelTime,ftUserTime; GetThreadTimes(thread1,&ftCreationTime,&ftExitTime,&ftKernelTime,&ftUserTime); 把KernelTime和UserTime加起来得到CPU时间,可以: __int64time; time=FileTimeToQuadWord(&ftKernelTime)+FileTimeToQuadWord(&ftUserTime); 其中,FileTimeToQuadWord函数的定义如下: __int64FileTimeToQuadWord(PFILETIMEpft){ return(Int64ShllMod32(pft->dwHighDateTime,32)|pft->dwLowDateTime); } 也许想把__int64time转换成字符串以便显示,可以调用_i64tot、_i64toa、或_i64tow函数,如: TCHARtimestr[65]; _i64tot(time,timestr,10);//转换成10进制数后再转换得到字符串。 实验结果: 三、实验心得 这次实验是《Windows程序设计》进行的最后一次实验了,这次实验主要是对线程优先级进行处理: 线程的创建、调用、调节优先级、显示运行进度及CPU占用时间等功能。 通过本次实验我掌握了通过创建一些线程函数来完成一些工作。 掌握了线程的优先级调用步骤。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- windows 程序设计 实验 报告
![提示](https://static.bingdoc.com/images/bang_tan.gif)