windows程序的设计实验报告Word格式.docx
- 文档编号:21480587
- 上传时间:2023-01-30
- 格式:DOCX
- 页数:18
- 大小:127.84KB
windows程序的设计实验报告Word格式.docx
《windows程序的设计实验报告Word格式.docx》由会员分享,可在线阅读,更多相关《windows程序的设计实验报告Word格式.docx(18页珍藏版)》请在冰豆网上搜索。
intm_iErrorCode;
TCHAR*m_pcErrorInformation;
public:
GetErrorInformation();
~GetErrorInformation();
voidSetErrorCode(intErrorCode);
TCHAR*GetErrorString();
protected:
};
d,新建成员函数:
TCHAR*GetErrorInformation:
GetErrorString()
三,实验核心代码:
1,类classGetErrorInformation成员函数代码:
//Gettheerrorcode'
stextualdescription
BOOLfOk=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_MASK,hDll,m_iErrorCode,MAKELANGID(LANG_CHINESE,SUBLANG_ENGLISH_US),
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,查询函数:
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;
uc.m_Length<
returnos;
LPTSTRm_pUChar;
UINTm_Length;
UChar();
UChar(constTCHAR*pChar);
UChar&
operator+(UCharuchar2);
operator=(constTCHAR*pStr2);
operator=(UCharuchar2);
BOOLoperator>
(UCharuchar2);
UINTLength();
virtual~UChar();
4,实现unicode入口函数
5,实现各个函数。
三,实验核心代码
1,Uchar类成员函数的实现:
UChar:
UChar()
m_pUChar=NULL;
m_Length=0;
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)
LPTSTRpTem;
iCLen=lstrlen(this->
m_pUChar)+lstrlen(uchar2.m_pUChar)+sizeof(TCHAR);
pTem=(PTSTR)malloc(iCLen*sizeof(TCHAR));
lstrcpy(pTem,this->
m_pUChar);
if(this->
m_pUChar!
=NULL)
free(this->
lstrcat(pTem,uchar2.m_pUChar);
this->
m_pUChar=pTem;
return*this;
operator=(constTCHAR*pStr2)
iCLen=lstrlen(pStr2)+sizeof(TCHAR);
m_pUChar=(TCHAR*)malloc(iCLen);
lstrcpy(this->
m_pUChar,pStr2);
operator=(UCharuchar2)
iCLen=lstrlen(uchar2.m_pUChar)+sizeof(TCHAR);
m_pUChar=(TCHAR*)malloc(iCLen);
lstrcpy(m_pUChar,uchar2.m_pUChar);
BOOLUChar:
operator>
(UCharuchar2)
returnlstrcmp(this->
m_pUChar,uchar2.m_pUChar);
UINTUChar:
Length()
returnthis->
m_Length;
~UChar()
if(m_pUChar!
free(m_pUChar);
2,入口函数的实现:
intmain(intargc,char*argv[])
UCharu1(_TEXT("
爸爸妈妈你们好吗!
"
));
UCharu2(_TEXT("
爷爷奶奶你们好吗!
BOOLb;
cout<
u1<
u2<
u1=_TEXT("
哥哥姐姐你们好吗!
u2=_TEXT("
叔叔伯伯你们好吗!
b=u1>
u2;
b="
b<
//u1+u2;
u1="
u1=u2;
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_DEFINED
2,“产生”函数实现过程代码:
voidCGUIDDlg:
OnButtonCreatNew()
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()
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,退出进程
OnButtonExitprocess()
m_MyProcess.ExitProcess(0);
3,进程目录
OnButtonProcessDirectory()
CStringstr;
str=m_MyProcess.GetCurrentDirectory();
m_directory.SetWindowText(str);
4.实验结果
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;
#endif
4,实现函数功能。
响应启动函数:
voidCMFCThreadDlg:
OnButtonStartThread()
PTHREADSTRUCTpThreadParam=newTHREADSTRUCT();
GetDlgItem(IDC_EDIT_A)->
GetWindowText(str);
pThreadParam->
addParam1=atoi(str);
GetDlgItem(IDC_EDIT_B)->
addParam2=atoi(str);
m_pThread=AfxBeginThread((AFX_THREADPROC)CMFCThreadDlg:
AddThread,(LPVOID)pThreadParam);
ASSERT(m_pThread);
intret;
ret=WaitForSingleObject(m_pThread->
m_hThread,10);
switch(ret)
caseWAIT_FAILED:
{
DWORDerrCode;
errCode=GetLastError();
CStringerrStr;
errStr.Format("
线程调用出错,出错代码为%d"
errCode);
MessageBox(errStr);
break;
caseWAIT_TIMEOUT:
{
线程等待超时"
default:
str.Format("
%d"
pThreadParam->
addResult);
GetDlgItem(IDC_EDIT_ADD_RESULT)->
SetWindowText(str);
成功调用"
}
deletepThreadParam;
:
CloseHandle(m_pThread->
m_hThread);
m_pThread=NULL;
return;
实验完成加法运算:
4+5=9
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- windows 程序 设计 实验 报告
![提示](https://static.bdocx.com/images/bang_tan.gif)