收藏 分销(赏)

FTP服务与客户端设计毕业设计论文模板.doc

上传人:a199****6536 文档编号:2727304 上传时间:2024-06-05 格式:DOC 页数:54 大小:868.54KB 下载积分:14 金币
下载 相关 举报
FTP服务与客户端设计毕业设计论文模板.doc_第1页
第1页 / 共54页
FTP服务与客户端设计毕业设计论文模板.doc_第2页
第2页 / 共54页


点击查看更多>>
资源描述
FTP服务和用户端设计 摘要 FTP为一个主流网络文件传输协议。设计和实现FTP服务和用户端,有利于深入了解网络编程和FTP协议,使理论知识和实践结合起来。本文采取VC++6.0编程工具设计和实现了FTP服务和用户端设计。其关键设计工作为:服务器端设计和用户端设计。服务器端设计模块关键有:服务器日志模块,在线用户模块,程序设置模块 ,统计模块,安全模块。用户端设计模块关键有:连接服务器模块,上传文件模块,下载文件模块。经过实际测试和应用,验证了本文设计正确性。 关键词 FTP 服务器 用户端 VC++6.0 The design of FTP Server and Client Abstract FTP is a mainstream network file transfer protocol. Design and Implementation of FTP services and clients will help in-depth understanding of network programming and FTP, and make the theoretical knowledge and practice together. In this paper, using VC + +6.0 programming tool, the FTP server and client designe are designed and implemented. The main design work is for: the design of server and client . Server-side design modules are: server logs module, online modules, procedures set module, statistics module, the security module. lient design modules are: connect to server module, upload module, download files module. Through practical application and testing ,it verifys the correctness of the design of the paper. Keywords FTP Sever Client VC++6.0 目 录 第1章 绪论 2 1.1 FTP介绍 3 1.2 VC++6.0介绍 6 1.3 本文工作内容 8 第2章 系统整体设计 9 2.1 FTP服务器整体设计 9 2.2 FTP用户端整体设计 10 第3章 FTP服务器模块设计 11 3.1服务器日志模块 11 3.2 在线用户模块 16 3.3 程序设置模块 19 3.4 统计模块 22 3.5 安全模块 25 第4章 FTP用户端模块设计 33 4.1连接服务器模块 33 4.2 下载文件模块 35 4.3 上传文件模块 40 第5章 结论和展望 44 致 谢 45 参考文件 46 第1章 绪论 1.1 FTP介绍 FTP关键作用,就是让用户连接上一个远程计算机(这些计算机上运行着FTP服务器程序)察看远程计算机有哪些文件,然后把文件从远程计算机上拷到当地计算机,或把当地计算机文件送到远程计算机去。 以hDz9wb-[ i(l*R中国Web技术站N GEHv /X1fG4ma8S(l7^4L@@Nvh ?以下传文件为例,当开启FTP从远程计算机拷贝文件时,实际上开启了两个程序:一个当地机上FTP用户程序:它向FTP服务器提出拷贝文件请求。 另一个是开启在远程计算机上FTP服务器程序,它响应请求把指定文件传送到计算机中。FTP采取“用户机/服务器”方法,用户端要在自己当地计算机上安装FTP用户程序。FTP用户程序有字符界面和图形界面两种。字符界面FTP命令复杂、繁多。图形界面FTP用户程序,操作上要简练方便多。简单地说,支持FTP协议服务器就是FTP服务器。 通常来说,用户联网首要目标就是实现信息共享,文件传输是信息共享很关键一个内容之一。Internet上早期实现传输文件,并不是一件轻易事, 我们知道 Internet是一个很复杂计算机环境,有PC,有工作站,有MAC,有大型机,据统计连接在Internet上计算机已经有上千万台,而这些计算 机可能运行不一样操作系统, 有运行Unix服务器,也有运行Dos、WindowsPC机和运行MacOS苹果机等等,而多种操作系统之间文件交流问题,需要建立一个统一 文件传输协议,这就是所谓FTP。基于不一样操作系统有不一样FTP应用程序,而全部这些应用程序全部遵守同一个协议,这么用户就能够把自己文件传送给 她人,或从其它用户环境中取得文件。中国Web技术站| M�Z5g0mq-|\G$@ 和大多数Internet服务一样,FTP也是一个用户机/服务器系统。用户经过一个支持FTP协议用户机程序,连接到在远程主机上FTP服务器程 序。用户经过用户机程序向服务器程序发出命令,服务器程序实施用户所发出命令,并将实施结果返回到用户机。比如说,用户发出一条命令,要求服务器向用 户传送某一个文件一份拷贝,服务器会响应这条命令,将指定文件送至用户机器上。用户机程序代表用户接收到这个文件,将其存放在用户目录中。中国Web技术站b:\ Qq5xu;m:c        在FTP使用当中,用户常常碰到两个概念:"下载"(Download)和"上载"(Upload)。"下载"文件就是从远程主机拷贝文件至自己计算机上;"上载"文件就是将文件从自己计算机中拷贝至远程主机上。用Internet语言来说,用户可经过用户机程序向(从)远程主机上载(下载)文件。中国Web技术站'ew'rF/E`$DA.v        使用FTP时必需首先登录,在远程主机上取得对应权限以后,方可上载或下载文件。也就是说,要想同哪一台计算机传送文件,就必需含有哪一台计算机合适 授权。换言之,除非有用户ID和口令,不然便无法传送文件。这种情况违反了Internet开放性,Internet上FTP主机何止千万,不可能要 求每个用户在每一台主机上全部拥有帐号。匿名FTP就是为处理这个问题而产生。 0P#YK)Z.@8N4G,?�M U%j        匿名FTP是这么一个机制,用户可经过它连接到远程主机上,并从其下载文件,而无需成为其注册用户。系统管理员建立了一个特殊用户ID,名为anonymous, Internet上任何人在任何地方全部可使用该用户ID。中国Web技术站2v1n)En(o!Iw&w7G$F        经过FTP程序连接匿名FTP主机方法同连接一般FTP主机方法差不多,只是在要求提供用户标识ID时必需输入anonymous,该用户ID口令 能够是任意字符串。习惯上,用自己E-mail地址作为口令,使系统维护程序能够统计下来谁在存取这些文件。 zk�h*a*J8R/E-O       值得注意是,匿名FTP不适适用于全部Internet主机,它只适适用于那些提供了这项服务主机。当远程主机提供匿名FTP服务时,会指定一些目录向公 众开放,许可匿名存取。系统中其它目录则处于隐匿状态。作为一个安全方法,大多数匿名FTP主机全部许可用户从其下载文件,而不许可用户向其上载文件,也 就是说,用户可将匿名FTP主机上全部文件全部拷贝到自己机器上,但不能将自己机器上任何一个文件拷贝至匿名FTP主机上。即使有些匿名FTP主机 确实许可用户上载文件,用户也只能将文件上载至某一指定上载目录中。随即,系统管理员会去检验这些文件,她会将这些文件移至另一个公共下载目录中,供其它 用户下载,利用这种方法,远程主机用户得到了保护,避免了有些人上载有问题文件,如带病毒文件。中国Web技术站F:jm dD&V        作为一个Internet用户,可经过FTP在任何两台Internet主机之间拷贝文件。不过,实际上大多数人只有一个Internet帐户,FTP主 要用于下载公共文件,比如共享软件、各企业技术支持文件等。 Internet上有成千上万台匿名FTP主机,这些主机上存放着数不清文件,供用户无偿拷贝。实际上,几乎全部类型信息,全部类型计算机程序全部可 以在Internet上找到。这是Internet吸引我们关键原因之一。匿名FTP使用户有机会存取到世界上最大信息库,这个信息库是日积月累起来 ,而且还在不停增加,永不关闭,包含到几乎全部专题。而且,这一切是无偿。中国Web技术站1f6Q\a-h        匿名FTP是Internet网上公布软件常见方法。Internet之所以能延续到今天,是因为大家使用经过标准协议提供标准服务程序。像这么程 序,有很多就是经过匿名FTP公布,任何人全部能够存取它们。Internet中有数目巨大匿名FTP主机和更多文件,那么到底怎样才能知道某一 特定文件在哪个匿名FTP主机上那个目录中呢?这正是Archie服务器所要完成工作。Archie将自动在FTP主机中进行搜索,结构一个包含全部文件目录信息数据库,使你能够直接找到所需文件位置信息。 其支持两种模式,一个方法叫做Standard (也就是 Active,主动方法),一个是 Passive (也就是PASV,被动方法)。 Standard模式 FTP用户端发送 PORT 命令到FTPserver。Passive模式FTP用户端发送 PASV命令到 FTP Server。 Standard模式FTP 用户端首先和FTP ServerTCP 21端口建立连接,经过这个通道发送命令,用户端需要接收数据时候在这个通道上发送PORT命令。 PORT命令包含了用户端用什么端口接收数据。在传送数据时候,服务器端经过自己TCP 20端口发送数据。 FTP server必需和用户端建立一个新连接用来传送数据。 Passive模式在建立控制通道时候和Standard模式类似,当用户端经过这个通道发送PASV 命令时候,FTP server打开一个在1024和5000之间随机端口而且通知用户端在这个端口上传送数据请求,然后FTP server 将经过这个端口进行数据传送,这个时候FTP server不再需要建立一个新和用户端之间连接。 现在FTP软件里面包含在IE5以上版本里面也已经支持这两种模式了。通常部分FTP用户端软件就比很好设置了,通常全部有一个PASV选项,比如 CuteFTP,传输方法全部有Standard和PASV选项,能够自己进行选择;另外在IE里面假如要设置成PASV模式话能够选中工具- Internet选项-高级-为FTP站点启用文件夹视图,不然就采取Standard模式。 1.2 VC++6.0介绍 本课题设计采取Microsoft Visual C++6.0作为开发工具。Visual c++是开发Windows应用程序主流开发工具,能够利用资源多。Visual C++ 不仅仅是一个编译器。它是一个全方面应用程序开发环境,使用它你充足利用含有面向对象特征 C++ 来开发出专业级 Windows 应用程序。Visual  C++作为一个程序设计语言,它同时也是一个集成开发工具,提供了软件代码自动生成和可视化资源编辑功效。在使用Visual  C++开发应用程序过程中,系统为我们生成了大量多种类型文件。  Visual C++采取框架是MFC。MFC不仅仅是大家通常了解一个类库。你假如选择了MFC,也就选择了一个程序结构,一个编程风格。MFC 是一个很大、扩展了 C++ 类层次结构,它能使开发 Windows 应用程序变得愈加轻易。MFC 是在整个 Windows 家族中全部是兼容,也就是说,不管是 Windows3.x、Windows95 还是 Windows NT,所使用 MFC 是兼容。每当新 Windows 版本出现时,MFC 也会得到修改方便使旧编译器和代码能在新系统中工作。MFC 也回得到扩展,添加新特征、变得愈加轻易建立应用程序。 使用 MFC 最大优点是它为你做了全部最难做事。MFC 中包含了上成千上万行正确、优化和功效强大 Windows 代码。你所调用很多组员函数完成了你自己可能极难完成工作。从这点上将,MFC 极大地加紧了你程序开发速度。 因为MFC编程方法充足利用了面向对象技术优点,它使得我们编程时极少需要关心对象方法实现细节,同时类库中多种对象强大功效足以完成我们程序中绝大部分所需功效,这使得应用程序中程序员所需要编写代码大为降低,有力地确保了程序良好可调试性。最关键是MFC类库在提供对象多种属性和方法全部是经过谨慎编写和严格测试,可靠性很高,这就确保了使用MFC类库不会影响程序可靠性和正确性。 MFC常见类有: 1).CWnd:窗口,它是大多数“看得见东西”父类(Windows里几乎全部看得见东西全部是一个窗口,大窗口里有很多小窗口),比如视图CView、 框架窗口CFrameWnd、工具条CToolBar、对话框CDialog、按钮CButton,etc;一个例外是菜单(CMenu)不是从窗口派生 。该类很大,一开始也无须学,知道就行了。 2).CDocument文档,负责内存数据和磁盘交互。最关键是OnOpenDocument(读入),OnSaveDocument(写盘),Serialize(读写)。 3).CView视图,负责内存数据和用户交互。包含数据显示、用户操作响应(如菜单选择、鼠标响应)。最关键是OnDraw(重画窗 口),通常见CWnd::Invalidate()来开启它。另外,它经过消息映射表处理菜单、工具条、快捷键和其它用户消息。你自己很多功效全部要加在 里面,你打交道最多就是它。 4).CDC设备文本。不管是显示器还是打印机,全部是画图给用户看。这图就抽象为CDC。CDC和其它GDI(图形设备接口)一起,完成文字和图形、图 像显示工作。把CDC想象成一张纸,每个窗口全部有一个CDC相联络,负责画窗口。CDC有个常见子类CClientDC(窗口用户区),画图通常经过 CClientDC完成。 5).CDialog对话框。 6).CWinApp应用程序类。似于C中main函数,是程序实施入口和管理者,负责程序建立、消亡,主窗口和文档模板建立。最常见函数InitInstance():初始化。 7).CGdiObject及子类,用于向设备文本画图。它们全部需要在使用前选进DC。 8).CPen笔,画线。 9).CBrush刷子,填充。 10).CFont字体,控制文字输出字体。 11).CBitmap位图。 12).CPalette调色板 。 13).CRgn区域,指定一块区域能够用于做特殊处理。 14).CFile文件。最关键不外是Open(打开),Read(读入),Write(写)。 15).CString字符串。封装了C中字符数组,很实用。 16).CPoint点,就是(x,y)对。 17).CRect矩形,就是(left,top,right,bottom)。 18).CSize大小,就是(cx,cy)对(宽、高)。 1.3 本文工作内容 本文关键工作为FTP服务器和用户端设计。其关键设计内容有: (1)服务器设计: ● 服务器日志模块。 ● 在线用户模块。 ● 程序设置模块 。 ● 统计模块。 ● 安全模块。 (2)用户端设计: ● 连接服务器模块。 ● 上传文件模块。 ● 下载文件模块。 第2章 系统整体设计 本系统设计为FTP服务器和用户端设计,关键设计模块分为服务器设计模块和用户端设计模块。服务器设计模块包含:服务器日志模块,在线用户模块,程序设置模块 ,统计模块,安全模块。用户端设计模块包含:连接服务器模块,上传文件模块,下载文件模块。 2.1 FTP服务器整体设计 服务器设计模块包含:服务器日志模块,在线用户模块,程序设置模块 ,统计模块,安全模块。其软件设计模块层次图图2.1所表示。 图2.1 FTP服务器模块设计层次图 Fig. 2.1 FTP server module level design plans 服务器日志模块。服务器日志模块关键功效为显示和统计用户登录信息和一系列操作信息。比如用户上传文件内容,上传时间;下载文件内容,下载时间等等。 在线用户模块。在线用户模块关键功效为显示目前连接上服务器用户。 程序设置模块。程序设置模块关键功效为配置服务器参数。比如许可用户下载,许可用户上传等部分列用户对服务器操作参数配置。 统计模块。统计模块关键功效为统计历史时间上,服务器多种操作总量并显示。比如服务器总下载量,总上传量,总连接用户数等。 安全模块。安全模块关键功效为配置服务器安全性。关键配置内容为设置许可接入服务器IP和严禁接入服务器IP。 2.2 FTP用户端整体设计 用户端设计模块包含:连接服务器模块,上传文件模块,下载文件模块。其软件设计层次图图2.2所表示。 图2.2 FTP用户端模块设计层次图 Fig. 2.2 FTP client module level design plans 连接服务器模块。连接服务器模块关键功效为依据用户输入用户名、密码、服务器名和连接端口,完成用户端对服务器接入。 上传文件模块。上传文件模块关键功效为浏览当地文件,选择上传文件,上传文件到服务器。 下载文件模块。下载文件模块关键功效为显示服务器文件目录,依据用户选择下载对应文件,存放到当地机器硬盘上。 第3章 FTP服务器模块设计 服务器关键设计模块为五个模块:服务器日志模块,在线用户模块,程序设置模块 ,统计模块,安全模块。 3.1服务器日志模块 服务器日志模块关键功效为显示和统计用户登录信息和一系列操作信息。其具体显示和统计日志信息为:用户登录信息;用户上传文件信息;用户下载文件信息;用户设置服务器文件目录信息;用户创建服务器文件目录信息;用户删除服务器文件目录信息;用户修改服务器文件目录信息;用户下线信息。其程序具体设计方法为:当服务器接收到用户端命令信息时,将信息显示在服务器Log信息窗口,并将其统计在文件中。其程序设计步骤图图3.1.1所表示。 图3.1.1服务器日志模块设计步骤图 Fig. 3.1.1 Server logs modular design flow chart 其服务器日志模块运行界面图图3.1.2所表示 图3.1.2 服务器日志模块运行界面图 Fig. 3.1.2 Server logs module running interface 其设计关键实现程序代码以下: AddTraceLine函数关键功效为向服务器日志信息显示List控件增加一个元素,用以显示到来信息。 void CTracePage::AddTraceLine(int nLevel, LPCTSTR pstrFormat, ...) { CString str; // format and write the data we were given va_list args; va_start(args, pstrFormat); str.FormatV(pstrFormat, args); try { // create new message CLogMsg *pLogMsg = new CLogMsg; GetLocalTime(&pLogMsg->m_sysTime); pLogMsg->m_nLevel = nLevel; pLogMsg->m_strText = str; m_QueueLock.Lock(); m_LogQueue.AddTail(pLogMsg); m_QueueLock.Unlock(); // schedule log action PostMessage(WM_ADDTRACELINE); } catch(...) { } } OnAddTraceLine函数为日志消息响应函数,当服务器器接收到用户端信息时,向服务器日子模块发送日志消息;日子模块在响应函数OnAddTraceLine中,判定消息类别,依据其类别设定其消息显示内容和内容显示颜色。 LRESULT CTracePage::OnAddTraceLine(WPARAM, LPARAM) { CLogMsg *pLogMsg; try { // get first message in the queue // m_QueueLock.Lock(); pLogMsg = (CLogMsg *)m_LogQueue.RemoveHead(); // m_QueueLock.Unlock(); switch(pLogMsg->m_nLevel) { case 1: m_TraceList.AddString(pLogMsg->m_strText, RGB(0,130,0)); break; case 2: m_TraceList.AddString(pLogMsg->m_strText, RGB(0,0,255)); break; case 3: m_TraceList.AddString(pLogMsg->m_strText, RGB(255,0,0)); break; default: m_TraceList.AddString(pLogMsg->m_strText, RGB(0,0,0)); break; } /* CString strDateTime; strDateTime.Format("%02d/%02d/%02d %02d:%02d:%02d.%03d ", pLogMsg->m_sysTime.wDay, pLogMsg->m_sysTime.wMonth, pLogMsg->m_sysTime.wYear, pLogMsg->m_sysTime.wHour, pLogMsg->m_sysTime.wMinute, pLogMsg->m_sysTime.wSecond, pLogMsg->m_sysTime.wMilliseconds); switch(pLogMsg->m_nLevel) { case 1: m_LogFile << error_lvl << strDateTime << pLogMsg->m_strText << endl; break; case 2: m_LogFile << warning_lvl << strDateTime << pLogMsg->m_strText << endl; break; case 3: default: m_LogFile << trace_lvl << strDateTime << pLogMsg->m_strText << endl; break; } */ delete pLogMsg; } catch(...) { // something is wrong... } return TRUE; } OnSize为日子模块窗口大小改变事件响应函数,当应用程序窗口大小发生改变时,会触发窗口改变事件。在事件响应函数OnSize中,日子模块改变窗口大小,使其和主窗口保持大小百分比。 void CTracePage::OnSize(UINT nType, int cx, int cy) { CDialog::OnSize(nType, cx, cy); if (IsWindow(::GetDlgItem(m_hWnd, IDC_TRACE))) { CRect rect; GetClientRect(rect); // rect.DeflateRect(5,5,10,10); m_TraceList.MoveWindow(rect); } } void CTracePage::OnTraceClear() { m_TraceList.ResetContent(); } void CTracePage::OnContextMenu(CWnd* pWnd, CPoint point) { CMenu menu; menu.LoadMenu(MAKEINTRESOURCE(IDR_TRACE_MENU)); menu.GetSubMenu(0)->TrackPopupMenu(0, point.x, point.y, this, NULL); } 3.2 在线用户模块 在线用户模块关键功效为显示目前连接上服务器用户。其显示内容有:用户登录用户名,用户IP,用户登录时间。显示方法为使用ClistCtrl控件将显示内容显示在其上。 ClistCtrl控件常见操作方法以下。 1)设置ClistCtrl类型。 DWORD SetExtendedStyle(DWORD dwNewStyle);其中 LVS_EX_CHECKBOXES 表示添加CheckBox, LVS_EX_FULLROWSELECT 表示选择整行, LVS_EX_GRIDLINES 表示添加表格线。假如设置了LVS_EX_CHECKBOXES属性,则能够用 BOOL GetCheck( int nItem ) const;来得到某一行是否Checked。 2) 删除操作。BOOL DeleteItem( int nItem),删除指定元素,nItem为要删除元素。BOOL DeleteAllItems( ),删除全部元素。 3) 插入元素操作。int InsertItem( int nItem, LPCTSTR lpszItem),nItem为插入元素索引号,lpszItem为插入元素标签地址。 4)插入列操作。int InsertColumn( int nCol, LPCTSTR lpszColumnHeading, int nFormat = LVCFMT_LEFT, int Width = -1, int nSubItem = -1 ),nCol为新列索引号,lpszColumnHeading列元素存放名称地址。  5)设置列宽操作。BOOL SetColumnWidth( int nCol, int cx ), nCol列所引号,cx设置宽度。 6)设置元素值操作。BOOL SetItemText(int nItem,int nSubItem, LPCTSTR lpszText ),nItem设置元素,nSubItem设置子元素,lpszText值内容地址。 其程序设计步骤图图3.2.1所表示。 图3.2.1 在线用户模块设计步骤图 Fig. 3.2.1 Online user modular design flow chart 在线用户模块运行界面图图3.2.2所表示。 图3.2.2 在线用户模块运行界面图 Fig. 3.2.2 Online user modular running interface 其程序设计关键实现代码以下: OnInitDialog()为在线用户模块对话框初始函数,在线用户模块在这里为在线用户List显示控件,增添三个元素:“用户名”,“IP地址”,“登陆时间”,用来显示登陆用户信息。 BOOL COnlineUsersPage::OnInitDialog() { CDialog::OnInitDialog(); m_OnlineUsers.InsertColumn(1, "用户名"); m_OnlineUsers.InsertColumn(2, "IP 地址"); m_OnlineUsers.InsertColumn(3, "登录时间"); DWORD dwStyle = m_OnlineUsers.GetExtendedStyle(); dwStyle |= LVS_EX_FULLROWSELECT; m_OnlineUsers.SetExtendedStyle(dwStyle); return TRUE; } AddUser函数为在线用户信息显示List控件,增加元素函数。当有新用户登录服务器时,在线用户模块调用AddUser函数,显示新登录用户信息。 void COnlineUsersPage::AddUser(DWORD nThreadID, LPCTSTR lpszName, LPCTSTR lpszAddress) { CString strThreadID; strThreadID.Format("%d", nThreadID); LVFINDINFO info; info.flags = LVFI_PARTIAL|LVFI_STRING; info.psz = (LPCTSTR)strThreadID; int nIndex = m_OnlineUsers.FindItem(&info); if (nIndex == -1) { nIndex = m_OnlineUsers.InsertItem(0, strThreadID); } m_OnlineUsers.SetItemText(nIndex, 1, lpszName); m_OnlineUsers.SetItemText(nIndex, 2, lpszAddress); m_OnlineUsers.SetItemText(nIndex, 3, CTime::GetCurrentTime().Format("%H:%M:%S")); } RemoveUser函数为在线用户信息显示List控件,删除元素函数。当有用户下线时或则断开服务器连接时,在线用户模块调用RemoveUser函数,删除对应登录用户信息。 void COnlineUsersPage::RemoveUser(DWORD nThreadID) { LVFINDINFO info; CString strThreadID; strThreadID.Format("%d", nThreadID); info.flags = LVFI_PARTIAL|LVFI_STRING; info.psz = (LPCTSTR)strThreadID; int nIndex = m_OnlineUsers.FindItem(&info); if (nIndex != -1) { m_OnlineUsers.DeleteItem(nIndex); } } 3.3 程序设置模块 程序设置模块关键功效为配置服务器参数。其配置参数有:FTP连接端口,最大用户连接数,服务器开启方法,服务器系统信息,Log文件查看和清除。其程序设计方法为:系统时刻监控程序设置模块,当程序设置模块触发应用消息时,系统重新读入配置信息;当程序设置模块触发查看Log信息时,打开Log文件;当程序设置模块触发清除Log信息时,清空Log文件。其程序步骤图图3.3.1所表示。 图3.3.1 程序设置模块设计步骤图 Fig. 3.3.1 Procedures settings modular design flow chart 程序设置模块运行界面图图3.3.2所表示。 图3.3.2 程序设置模块运行界面图 Fig. 3.3.2 Procedures settings modular running interface 其程序设计关键实现实现代码以下: OnDestroy函数为程序设置模块销毁函数。当主程序退出时,销毁程序设置模块,此时程序设置模块调用OnDestroy函数读取配置参数,并将其写入配置文件中存放。 void CConfigurationPage::OnDestroy() { UpdateData(); // save settings AfxGetApp()->WriteProfileInt("Settings", "Port", m_nPort); AfxGetApp()->WriteProfileInt("Settings", "MaxUsers", m_nMaxUsers); AfxGetApp()->WriteProfileInt("Settings", "Timeout", m_nTimeout); AfxGetApp()->WriteProfileString("Settings", "WelcomeMsg", m_strWelcomeMessage); AfxGetApp()->WriteProfileString("Settings", "GoodbyeMsg", m_strGoodbyeMessage); AfxGetApp()->WriteProfileInt("Settings", "LaunchOnStartup", m_bLaunchOnStartup); AfxGetApp()->WriteProfileInt("Settings", "StartInTray", m_bStartInTray); AfxGetApp()->WriteProfileInt("Settings", "AutoActivate", m_bAutoActivate); AfxGetApp()->WriteProfileInt("Settings", "LogLevel", m_nLogLevel); AfxGetApp()->WriteProfileString("Settings", "AppName", m_strApplicationName); CDialogResize::OnDestroy(); } OnView()函数为程序设置模块日志文件查看函数。当用点击查看日志按钮时,程序设置模块调用OnView()函数打开日志文件。 void CConfigurationPage::OnView() { int ExecStatus = (UINT)ShellExecute(m_hWnd, "open", "NOTEPAD.EXE", (LPCTSTR)theApp.m_LogFile.m_FileName, 0, SW_SHOW); switch(ExecStatus) { case 0:
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 学术论文 > 毕业论文/毕业设计

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服