2023年windows程序设计实验报告_第1页
2023年windows程序设计实验报告_第2页
2023年windows程序设计实验报告_第3页
2023年windows程序设计实验报告_第4页
2023年windows程序设计实验报告_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

姓名:王雄军姓名:王雄军学号:学科:计算机科学与技术指导老师:陶勇实验分数:Windows程序设计实验报告TOC\o"1-3"\h\uHYPERLINK\l_Toc16292实验一错误解决ﻩPAGEREF_Toc162923HYPERLINK\l_Toc1061一、实验目的:ﻩPAGEREF_Toc10613HYPERLINK\l_Toc31093二、实验过程: PAGEREF_Toc310933HYPERLINK\l_Toc151041、实验环境设立: PAGEREF_Toc151043HYPERLINK\l_Toc51482、实验实现过程: PAGEREF_Toc51484(HYPERLINK\l_Toc26873a)在对话框中建立如下控件:ﻩPAGEREF_Toc268734(HYPERLINK\l_Toc23935b)响应“查询”按钮函数:ﻩPAGEREF_Toc239354(HYPERLINK\l_Toc11143c)新建类classGetErrorInformation PAGEREF_Toc111434(HYPERLINK\l_Toc28624d)新建成员函数:TCHAR*GetErrorInformation::GetErrorString() PAGEREF_Toc286245HYPERLINK\l_Toc17478三、实验核心代码:ﻩPAGEREF_Toc174785HYPERLINK\l_Toc75911、类classGetErrorInformation成员函数代码: PAGEREF_Toc75915HYPERLINK\l_Toc74662、查询函数:ﻩPAGEREF_Toc74666HYPERLINK\l_Toc3039四、实验结果: PAGEREF_Toc30396HYPERLINK\l_Toc1912实验二unicode实验 PAGEREF_Toc19127HYPERLINK\l_Toc20276一、实验目的ﻩPAGEREF_Toc202767HYPERLINK\l_Toc21341二、实验过程 PAGEREF_Toc213417HYPERLINK\l_Toc21495三、实验核心代码ﻩPAGEREF_Toc214958HYPERLINK\l_Toc34151、Uchar类成员函数的实现:ﻩPAGEREF_Toc34158HYPERLINK\l_Toc185252、入口函数的实现:ﻩPAGEREF_Toc185259HYPERLINK\l_Toc22477四、实验结果:ﻩPAGEREF_Toc2247710HYPERLINK\l_Toc1912实验三内核对象ﻩ11HYPERLINK\l_Toc17958一、实验目的ﻩPAGEREF_Toc1795811HYPERLINK\l_Toc19084二、实验过程 PAGEREF_Toc1908411HYPERLINK\l_Toc7867三、实验核心代码 PAGEREF_Toc786712HYPERLINK\l_Toc20233四、实验结果ﻩPAGEREF_Toc2023312HYPERLINK\l_Toc1261实验四系统进程控制ﻩPAGEREF_Toc126114HYPERLINK\l_Toc26464一、实验目的 PAGEREF_Toc2646414HYPERLINK\l_Toc27133二、实验过程 PAGEREF_Toc2713314HYPERLINK\l_Toc52三、实验核心代码 PAGEREF_Toc5214HYPERLINK\l_Toc203751、启动进程 PAGEREF_Toc2037514HYPERLINK\l_Toc99282、退出进程 PAGEREF_Toc992815HYPERLINK\l_Toc79023、进程目录ﻩPAGEREF_Toc790215HYPERLINK\l_Toc5265四、实验结果 PAGEREF_Toc526515HYPERLINK\l_Toc21704实验五线程实现ﻩPAGEREF_Toc2170417HYPERLINK\l_Toc16031一、实验目的 PAGEREF_Toc1603117HYPERLINK\l_Toc5716二、实验过程 PAGEREF_Toc571617HYPERLINK\l_Toc20860三、实验核心代码 PAGEREF_Toc2086018HYPERLINK\l_Toc4953四、实验结果ﻩPAGEREF_Toc495319实验一错误解决一.实验目的:

通过对windows代码的纠错解决,达成能检测所写代码的错误,以及系统运营的规定。熟悉纠错功能的运营过程。学会运用纠错功能。二,实验过程:1,实验环境设立:在visualC++6.0中新建mfc工程,命名为dlgerror,完毕进入编辑状态。2,实验实现过程:a,在对话框中建立如下控件:b,响应“查询”按钮函数:voidCDlgErrorDlg::OnButtonLookup()。C,新建类classGetErrorInformation声明代码:{private: HLOCALm_hlocal; intm_iErrorCode;ﻩTCHAR*m_pcErrorInformation;public:ﻩGetErrorInformation(); ~GetErrorInformation();ﻩvoidSetErrorCode(intErrorCode); TCHAR*GetErrorString();protected:private:};d,新建成员函数:TCHAR*GetErrorInformation::GetErrorString()三,实验核心代码:1,类classGetErrorInformation成员函数代码:TCHAR*GetErrorInformation::GetErrorString(){//Gettheerrorcode'stextualdescriptionBOOLfOk=FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM| ﻩﻩ ﻩ ﻩ FORMAT_MESSAGE_ALLOCATE_BUFFER|FORMAT_MESSAGE_MAX_WIDTHﻩﻩ_MASK,NULL,m_iErrorCode,MAKELANGID(LANG_CHINESE, ﻩﻩUBLANG_ENGLISH_US),(PTSTR)&m_hlocal,0,NULL);if(!fOk){//Isitanetwork-relatederror?HMODULEhDll=LoadLibraryEx(TEXT("netmsg.dll"),NULL,DONT_RESOLVE_DLL_REFERENCES);if(hDll!=NULL){FormatMessage(FORMAT_MESSAGE_FROM_HMODULE|ﻩ ﻩFORMAT_MESSAGE_FROM_SYSTEM|FORMAT_MESSAGE_MAX_WIDTH_MA SK,hDll,m_iErrorCode,MAKELANGID(LANG_CHINESE, SUBLANG_ENGLISH_US),(PTSTR)&m_hlocal,0,NULL);FreeLibrary(hDll);}} if(m_hlocal!=NULL)ﻩ{ﻩ m_pcErrorInformation=(char*)m_hlocal;ﻩ} else {ﻩ m_pcErrorInformation=(TCHAR*)malloc(60); ﻩTCHAR*charError=_TEXT("你所查找的错误代码不存在"); strcpy(m_pcErrorInformation,charError);ﻩ}ﻩreturnm_pcErrorInformation;}2,查询函数:voidCDlgErrorDlg::OnButtonLookup(){ //TODO:Addyourcontrolnotificationhandlercodehere interrorCode;ﻩGetErrorInformationgei;ﻩerrorCode=GetDlgItemInt(IDC_EDIT_ERROR_CODE);gei.SetErrorCode(errorCode); SetDlgItemText(IDC_EDIT_DISPLAY,gei.GetErrorString());}四,实验结果:实验二unicode实验一,实验目的通过对unicode的操作理解数据编码;熟悉unicode的各种运算;了解unicode和ASCII的区别。二,实验过程1,新建win32控制台程序,命名Uchar。2,建立空工程。3,添加类Uchar的声明:classUChar{ friendostream&operator<<(ostream&os,UChar&uc) {ﻩﻩos<<uc.m_pUChar<<endl;ﻩﻩos<<uc.m_Length<<endl;ﻩﻩreturnos;ﻩ}private:ﻩLPTSTRm_pUChar; UINTm_Length;public:ﻩUChar();ﻩUChar(constTCHAR*pChar); UChar&operator+(UCharuchar2); UChar&operator=(constTCHAR*pStr2); UChar&operator=(UCharuchar2);ﻩBOOLoperator>(UCharuchar2); UINTLength(); virtual~UChar();protected:private:};4,实现unicode入口函数5,实现各个函数。三,实验核心代码1,Uchar类成员函数的实现:UChar::UChar(){ m_pUChar=NULL;ﻩm_Length=0;}UChar::UChar(constTCHAR*pChar){ﻩintiCLen;iCLen=lstrlen(pChar)+sizeof(TCHAR); m_Length=iCLen-sizeof(TCHAR);ﻩm_pUChar=(TCHAR*)malloc(iCLen*sizeof(TCHAR)); lstrcpy(m_pUChar,pChar);}UChar&UChar::operator+(UCharuchar2){ intiCLen;ﻩLPTSTRpTem;ﻩiCLen=lstrlen(this->m_pUChar)+lstrlen(uchar2.m_pUChar)+sizeof(TCHAR); m_Length=iCLen-sizeof(TCHAR);pTem=(PTSTR)malloc(iCLen*sizeof(TCHAR));ﻩlstrcpy(pTem,this->m_pUChar); if(this->m_pUChar!=NULL) { free(this->m_pUChar);ﻩ} lstrcat(pTem,uchar2.m_pUChar); this->m_pUChar=pTem; return*this;}UChar&UChar::operator=(constTCHAR*pStr2){ﻩintiCLen;iCLen=lstrlen(pStr2)+sizeof(TCHAR);ﻩm_Length=iCLen-sizeof(TCHAR);ﻩif(this->m_pUChar!=NULL) { free(this->m_pUChar); }ﻩthis->m_pUChar=(TCHAR*)malloc(iCLen); lstrcpy(this->m_pUChar,pStr2); return*this;}UChar&UChar::operator=(UCharuchar2){ﻩintiCLen;iCLen=lstrlen(uchar2.m_pUChar)+sizeof(TCHAR);ﻩm_Length=iCLen-sizeof(TCHAR);if(this->m_pUChar!=NULL) { ﻩfree(this->m_pUChar);ﻩ} m_pUChar=(TCHAR*)malloc(iCLen); lstrcpy(m_pUChar,uchar2.m_pUChar); return*this;}BOOLUChar::operator>(UCharuchar2){ returnlstrcmp(this->m_pUChar,uchar2.m_pUChar);}UINTUChar::Length(){ﻩreturnthis->m_Length;}UChar::~UChar(){ﻩif(m_pUChar!=NULL) {ﻩ free(m_pUChar);ﻩ}}2,入口函数的实现:intmain(intargc,char*argv[]){ UCharu1(_TEXT("爸爸妈妈你们好吗!"));ﻩUCharu2(_TEXT("爷爷奶奶你们好吗!"));ﻩBOOLb;ﻩcout<<u1<<endl;ﻩcout<<u2<<endl;ﻩu1=_TEXT("哥哥姐姐你们好吗!"); u2=_TEXT("叔叔伯伯你们好吗!");cout<<u1<<endl; cout<<u2<<endl;b=u1>u2;ﻩcout<<"b="<<b<<endl;// u1+u2; cout<<"u1="<<u1<<endl; u1=u2;ﻩcout<<"u1="<<u1<<endl;ﻩreturn0;}四,实验结果:实验三内核对象一,实验目的了解系统内核对象;了解内核对象的作用。二,实验过程1,启动VC6.0,新建基于对话框的MFC工程,命名为GUID;2,设计对话框界面,如图:3,双击“产生”,响应函数。4,编写函数实现过程代码。三,实验核心代码1,guid结构:#ifndefGUID_DEFINED

#defineGUID_DEFINEDﻫ

ﻩtypedefstruct_GUID{//sizeis16ﻫDWORDData1;

WORDData2;ﻫWORDData3;ﻫBYTEData4[8];

}GUID;ﻫﻫ #endif//!GUID_DEFINED2,“产生”函数实现过程代码:voidCGUIDDlg::OnButtonCreatNew(){ //TODO:AddyourcontrolnotificationhandlercodehereﻩCStringstrGUID; HRESULThResult;ﻩGUID*pguid=newGUID(); hResult=CoCreateGuid(pguid);ﻩstrGUID.Format("%-x-%-x-%-x-%-x%-x%-x%-x%-x%-x%-x%-x",pguid->Data1,pguid->Data2,pguid->Data3,pguid->Data4[0],pguid->Data4[1],pguid->Data4[2],pguid->Data4[3],pguid->Data4[4],pguid->Data4[5],pguid->Data4[6],pguid->Data4[7]); m_eGuid.SetWindowText(strGUID);}四,实验结果单击产生结果如下:实验四系统进程控制一,实验目的理解进程在系统中的作用;熟悉进程的工作方式;通过启动进程,熟悉进程的原理。二,实验过程1,启动VC6.0,创建基于对话框的MFC工程,命名process。2,设计对话框,如下图所示:3,实现各个按钮三,实验核心代码1,启动进程voidCProcessDlg::OnButtonStartProcess(){ //TODO:Addyourcontrolnotificationhandlercodehere BOOLret;ﻩCStringpathName; CStringstrFileFilter="可执行文献|*.exe";ﻩCFileDialogdFileDlg(TRUE,"exe",NULL,OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT|OFN_PATHMUSTEXIST|OFN_FILEMUSTEXIST,strFileFilter);ﻩif(dFileDlg.DoModal()==IDOK)ﻩ{ﻩﻩpathName=dFileDlg.GetPathName();ﻩﻩ ﻩ ret=m_MyProcess.CreateProcess(&pathName); if(!ret)ﻩ { MessageBox("进程创建失败");ﻩ } }}2,退出进程voidCProcessDlg::OnButtonExitprocess(){ﻩ//TODO:Addyourcontrolnotificationhandlercodehereﻩm_MyProcess.ExitProcess(0);}3,进程目录voidCProcessDlg::OnButtonProcessDirectory(){ﻩ//TODO:AddyourcontrolnotificationhandlercodehereﻩCStringstr; str=m_MyProcess.GetCurrentDirectory();ﻩm_directory.SetWindowText(str);}实验结果1,运营后点击启动过程,启动需要启动的进程:1,在这里选择进程editplus.exe,单击打开即可打开editplus软件。2,结果如下图:2,点击退出进程即可退出。3,点击进程目录就可知道当前打开的进程,效果如图:实验五线程实现一,实验目的重点掌握线程函数的创建;理解多线程;通过学习,能自己运用多线程到实际的项目中。二,实验过程1,启动VC6.0创建基于对话框的MFC工程,命名MFThread.。2,进入编辑状态,设计对话框如图所示:3,编写头文献:PARAMSTRUCT.H#ifndef_THREADSTRUCT_H_#define_THREADSTRUCT_H_typedefstruct_THREADSTRUCT{ intaddParam1; intaddParam2; intaddResult;}THREADSTRUCT,*PTHREADSTRUCT;#endif4,实现函数功能。三,实验核心代码响应启动函数:voidCMFCThreadDlg::OnButtonStartThread

温馨提示

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

评论

0/150

提交评论