windows程序设计实验报告Word格式.docx

上传人:b****2 文档编号:5786647 上传时间:2023-05-05 格式:DOCX 页数:13 大小:147.88KB
下载 相关 举报
windows程序设计实验报告Word格式.docx_第1页
第1页 / 共13页
windows程序设计实验报告Word格式.docx_第2页
第2页 / 共13页
windows程序设计实验报告Word格式.docx_第3页
第3页 / 共13页
windows程序设计实验报告Word格式.docx_第4页
第4页 / 共13页
windows程序设计实验报告Word格式.docx_第5页
第5页 / 共13页
windows程序设计实验报告Word格式.docx_第6页
第6页 / 共13页
windows程序设计实验报告Word格式.docx_第7页
第7页 / 共13页
windows程序设计实验报告Word格式.docx_第8页
第8页 / 共13页
windows程序设计实验报告Word格式.docx_第9页
第9页 / 共13页
windows程序设计实验报告Word格式.docx_第10页
第10页 / 共13页
windows程序设计实验报告Word格式.docx_第11页
第11页 / 共13页
windows程序设计实验报告Word格式.docx_第12页
第12页 / 共13页
windows程序设计实验报告Word格式.docx_第13页
第13页 / 共13页
亲,该文档总共13页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

windows程序设计实验报告Word格式.docx

《windows程序设计实验报告Word格式.docx》由会员分享,可在线阅读,更多相关《windows程序设计实验报告Word格式.docx(13页珍藏版)》请在冰点文库上搜索。

windows程序设计实验报告Word格式.docx

实验三、创建一个进程来运行一个应用程序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<

iostream.h>

intmain(){

cout<

<

"

hello!

"

endl;

return0;

//正常返回

}

2.用AppWizard建立一个MFCWindows应用

在窗口中输出"

Hello,World!

,修改OnDraw函数的定义,在最后一行加一句:

pDC->

TextOut(50,50,"

Hello,World"

);

3.编写简单的计算程序

输入圆的半径,计算圆的周长和面积并输出。

//该程序让用户输入圆的半径Radius,输出圆的周长Perimeter和面积Area

math.h>

constdoublePI=3.14159;

//定义一个常量PI

intradius;

doubleperimeter,area;

Pleaseinputtheradius:

;

cin>

>

radius;

perimeter=2*PI*radius;

//周长=2πR

area=PI*radius*radius;

//面积=πR2

Theperimeterofthecircle:

<

perimeter<

endl;

Theareaofthecircle:

area<

通过本次实验我了解了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文件中加上如下语句:

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

10)给CdlgDemoDlg类映射WM_DESTROY消息,在WM_DESTROY消息的处理函数OnDestroy中小毁非模态对话框指针。

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应用程序项目;

在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,&

thread3=(HANDLE)_beginthreadex(NULL,0,&

注意:

要先#include<

process.h>

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(&

其中,FileTimeToQuadWord函数的定义如下:

__int64FileTimeToQuadWord(PFILETIMEpft){

return(Int64ShllMod32(pft->

dwHighDateTime,32)|pft->

dwLowDateTime);

也许想把__int64time转换成字符串以便显示,可以调用_i64tot、_i64toa、或_i64tow函数,如:

TCHARtimestr[65];

_i64tot(time,timestr,10);

//转换成10进制数后再转换得到字符串。

这次实验是《Windows程序设计》进行的最后一次实验了,这次实验主要是对线程优先级进行处理:

线程的创建、调用、调节优先级、显示运行进度及CPU占用时间等功能。

通过本次实验我掌握了通过创建一些线程函数来完成一些工作。

掌握了线程的优先级调用步骤。

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

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2