毕业设计论文-局域网聊天系统的设计与实现内容摘要:
n 函数 则 是 Windows 程序的进入点。 2. Msg结构体 定义了一个 Msg结构体,是 Windows 内设的一种数据格式 , 在 Windows 程序中,消息是由 MSG结构体来表示的。 3. 注册窗口 RegisterClass()完成注册窗口类的功能,设定窗口的属性:边框、颜色、标题、位置等等。 4. 创建窗口 CreateWindow 函数可以用于创建父窗口、弹出窗口以及子窗口,在创建窗口时它可以确定窗口类、窗口标题、窗口风格、大小以及初始化位置。 5. 显示窗口 创建窗口后需要使用 ShowWindow 函数用于显示窗口。 刷新窗口 调用 UpdateWindow 函数来刷新窗口。 7. 消息循环 初始化工作完成后, WinMain 进入所谓的消息循环,使用 while 循环, 不断的 GetMessage,再使用 TranslateMessage 将消息转化,用 DispatchMessage 将消息传递给窗口函数去处理。 8. 获取消息 GetMessage 功能函数从消息队列中获取消息,如果消息队列中没有消息,此功能函数则会一直等得消息。 9. 转换消息 将特定的消息转换为不同的消息 ,例如消息队列中同时有 WM_KEYDOWN 和 WM_KEYUP消息时 ,意味着用户同时按下了键盘上的某几个键 ,此时 TranslateMessage 将其转换为一个 WM_CHAR 消息。 3 10. 将消息发送到回调函数 DispatchMessage 通过 USER 模块的协助将消息送到该窗口的窗口函数去了,但是 DispatchMessage 并没有指定函数名,却可以将消息传送过去,这是因为消息发生的时候,OS已经根据当时状态,为它标明了所属窗口,而窗口所属的窗口类亦是明确的。 11. WinMain 函数返回值 return。 //返回结构体变量 msg中的 wParam 的值。 12. WindowProc 窗口函数 窗口中的生命枢纽:窗口函数 WindowProc。 WindowProc 是一个 callback 函 数,常利用 switch/case 方式判断消息的种类,以决定处理方式。 MFC (Microsoft Foundation Class) 简介 MFC 是在 1992 年随微软的 Microsoft C/C++ 编译器发布的,是建立在 Windows API 之上的 C++ 类库( C++ Class Library),意图是使 Windows 程序设计过程更有效率,更符合面向对象的精神。 现在 MFC 已经成为了 Windows 环境上标准的 C++ API。 MFC 使得开发 Windows 应用程序变得简单容易 ,将很多应用程序开发中常用的功能自动化,并且提供了文档框架视图结构和活动文档这样的便于自定义的应用程序框架。 同时,在 Visual C++内部也内建了很多对 MFC 的非常实用的东西,例如类向导这样的支持,减少软件开发的时间,使用类向导可以生成从 hello world 这样的简单程序到活动文档服务器这样的复杂程序。 MFC 的消息映射机制也避免了使用性能较低的庞大虚函数表。 MFC在整个 Windows 家族中都是兼容的。 [1] MFC 与 C 语言 API 的关系 设置 Microsoft 基本类库与其它 Windows 类库所不同的唯一特征就是它与 C 语言编写的 Windows API 的紧密的映射关系。 而且,可以将直接调用 Windows API 与调用类库自由地混合起来使用。 这种直接访问并不意味着类可以完全取代 API。 开发者有时必须直接调用一些 Windows 函数,例如, SetCursor 和 GetSystemMetrics。 只有在有明显优势时,一个 Windows 函数才被一个类成员函数所替代。 MFC 类库 MFC 类库是一个很大的、扩展了的 C++类层次结构,与传统上使用 C 语言直接访问 Windows API 相反, MFC 已经包含和压缩了所有标准的 “ 样板文件 ” 代码,这些代码是所有用 C 编写的 Windows 程序所必需的,因此用 MFC 编写的程序要比用 C 语言编写的程序小得多,当然 MFC 所编写的程序的性能也毫无损失。 必要时,也可以 MFC可以用面向对象的方法来调用 Windows API,因为 MFC 不修改也不隐藏 Windows 程序的基本结构。 MFC 是很庞大的。 例如,版本 中包含了大约 200 个不同的类。 事实上,你可能只需要使用其中的十多个不同的类,就可以建立一个非常漂亮的程序。 MFC 层次结构大 约可分为几种不同的类型的类: 1. 根类: Cobject Microsoft 基本类库中的大多数类都是由在类层次表中根上的唯一的一个基类派生而来的。 2. MFC 应用结构类 MFC 应用构造类有助于一个框架应用的构造。 它们对大多数应用提供了通用功能。 可以在框架中填写对于应用特定的功能。 3. 窗口、对话和控件类 4 类 CWnd 和它的派生类封装了 HWND,它是一个 Windows 窗口。 CWnd 可被自己使用,也可以作为派生新类的基类。 类库提供的派生类表示各种窗口。 CWnd 是所有窗口的基类。 可以使用 CWnd 派生出来的一个类, 也可以从其中派生出自己的类。 4. 绘画和打印类 在 Windows 中,所有的图形输出都是在一个可视的绘图区上。 这叫作一个设备上下文(或 DC)。 MFC 提供了封装不同 DC 类型的类,也提供了对 Windows 绘图工具,例如位图、刷子、调色板和笔的封装。 5. 文件和数据库类 这些类允许将信息存储在一个数据库或一个磁盘文件中。 有两个数据库类的集合 ─ DAO 和 ODBC─ 它们提供了相似的功能。 6. Inter 和网络类 这些类允许和其它使用 ISAPI 的计算机或一个 Windows Socket 交换信息。 还有创建 ISAPI 扩展 DLL 的类的集合和操作 Windows 套接字的类的集合。 支持连接的类的分类: ISAPI 类、 Windows 套接字类、 Win32 Inter 类。 7. 其它还有简单的数据类型类、 OLE 类、调试和异常类、数组列表和映射类。 TCP/IP 协议及 WINDOWS SOCKETS 网络编程接口 TCP/IP 协议简介 通常包含了一系列与 “TCP (传输控制协议) ” 和 “IP (网际协议) ” 有联系的 网络协议 ,它包括其它的协议,应用软件,甚至网络媒介。 这些协议的示例是: UDP( User Datagram Protocol)协议、 ICMP( Inter Control Message Protocol)协议、 ARP(地址解析协议)和其他一些协议的协 议组。 应用的示例: tel(远程登录 )、 ftp(文件传递协议 )、 等。 这其中一些协议最早发源于美国国防部的 ARPA 网 项目。 [2] Windows Socket 网络编程简介 Socket 实际在计算机中提供了一个通信 端口,可以通过这个端口与任何一个具有 Socket 接口的计算机通信。 应用程序在网络上传输,接收的信息都通过这个 Socket 接口来实现。 Windows Sockets 规范定义了一套开放的、支持多种协议的、 Windows 下的网络编程接口。 它不仅包含了人们所熟悉的 Berkeley Socket 风格的库函数 , 也包含了一组针对 Windows 的扩展库函数, 使得 程序员能充分地利用 Windows 消息驱动机制进行编程。 现在的 Windows Sockets 已经基本上实现了与协议无关,你可以使用 Windows Sockets 来调用多种协议的功能,但较常使用的是 TCP/IP 协议。 [3] 多线程技术 进程及线程概述 进程和线程都是操作系统的概念。 每个进程是由一个或多个线程、私有的虚拟地址空间、代码、数据和其它各种系统资源组成,进程在运行过程中创建的资源随着进程的终止而被销毁,所使用的系统资源在进程终止时被释放或关闭。 进程是应用程序的执行实例。 线程是进程内的执行路径,也是 Win32 安排的最小执行单元。 线程包括堆栈、 CPU 5 寄存器的状态和系统计划程序执行列表中的项。 每一个进程至少有一个主执行线程 ,它无需由用户去主动创建,是由系统自动创建的,此线程终止时,进程也终止。 用户可以根据需要在应用程序中创建其它线程,多个线程并发地运行于同一个进程中,所有线程都在该进程的虚拟地址空间中,共同使用这些虚拟地址空间、全局变量和系统资源,但是必须使用信号灯或其他进程间的通信方法协调它们的工作。 一般情况下进程中的每个线程都独立运行的,对进程中的其他线程一无所知,除非使这些线程相互可见。 多线程可以实现并行处理,避免了某项任务长时间占用 CPU 时间。 要说明的一点是,目前大多数的计算机都是单处理器( CPU)的,为了运行所有 这些线程,操作系统为每个独立线程安排一些 CPU 时间,操作系统以轮换方式向线程提供时间片,这就给人一种假象,好象这些线程都在同时运行。 由此可见,如果两个非常活跃的线程为了抢夺对 CPU 的控制权,在线程切换时会消耗很多的 CPU 资源,反而会降低系统的性能。 这一点在多线程编程时应该注意。 MFC 对多线程编程的支持 Win32 SDK 函数支持进行多线程的程序设计,并提供了操作系统原理中的各种同步、互斥和临界区等操作。 Visual C++ 中,使用 MFC 类库也实现了多线程的程序设计,使得多线程编程 更加方便。 CWinThread 对象代表在一个应用程序内运行的线程。 运行的主线程通常由 CWinApp 的派生类提供; CWinApp 由 CWinThread 派生。 另外, CWinThread 对象允许一给定的应用程序拥有多个线程。 CWinThread 支持两种线程类型:工作者线程和用户界面线程。 工作者线程没有收发消息的功能:例如,在电子表格应用程序中进行后台计算的线程。 用户界面线程具有收发消息的功能,并处理从系统收到的消息。 CWinApp 及其派生类是用户界面线程的例子。 其它用户界面线程也可由 CWinThread 直 接派生。 CWinThread 类的对象存在于线程的生存期。 如果你希望改变这个特性,将 m_bAutoDelete 设为 FALSE。 要使你的代码和 MFC 是完全线程安全的, CWinThread 类是完全必要的。 框架使用的用来维护与线程相关的信息的线程局部数据由 CWinThread 对象管理。 由于依赖 CWinThread 来处理线程局部数据,任何使用 MFC 的线程必须由 MFC 创建。 例如,由运行时函数 _beginthreadex 创建的线程不能使用任何 MFC API。 为了创建一个线程,调用AfxBeginThread函数。 根据你需要工作者线程还是用户界面线程,有两种调用 AfxBeginThread 的格式。 如果你需要用户界面线程,则将指向你的 CWinThread 派生类的 CRuntimeClass 的指针传递给 AfxBeginThread。 如果你需要创建工作者线程,则将指向控制函数的指针和控制函数的参数传递给 AfxBeginThread。 对于工作者线程和用户界面线程,你可以指定可选的参数来修改优先级, 堆栈大小, 创建标志和安全属性。 AfxBeginThread 线程将返回指向新的 CWinThread 对象的指针。 与调 用 AfxBeginThread 相反,你可以构造一个 CWinThread 派生类的对象,然后调用 CreateThread。 如果你需要在连续创建和终止线程的执行之间重复使用 CWinThread对象,这种两步构造方法非常有用。 创建线程也可以使用 API 函数: CreateThread 函数完成。 其它还有挂起线程、结束线程等函数,将不再一一详解。 VFW简介 VFW 是 Microsoft 1992 年推出的关于数字视频的一个软件包,它能使应用程 序 数字 6 化并播放从传统模 拟 视频源得到的视频剪辑。 [4] VFW 的一个关键思想 是播放时不需要专用硬件。 为了解决数字视频数据量大的问题,需要对数据进行压缩。 它引进了一种叫 AVI 的文件标准,该标准未规定如何对视频进行捕获、压缩及播放,仅规定视频和音频该如何存储在硬盘上, 以及 在 AVI文件中交替存储视频帧和与之相匹配的音频数据。 VFW 给程序员提供 VBX和 AVICap 窗口类的高级编程工具,使程序员能通过发送消息或设置属性来捕获、播放和编辑视频剪辑。 用户不必专门安装 VFW, 在安装 Windows 时,安装程序会自动地安装配置视频所需的组件,如设备驱动程序、视频压缩程序等。 VFW 主要由以下六个模块 组成: 1. :包含了执行视频捕获的函数,它给 AVI 文件 、 I/O 和视频音频设备驱动程序提供一个高级接口; 2. :用一套特殊的 DrawDib 函数来处理屏幕上的视频操作 ; 3. :此驱动程序包括对 VFW 的 MCI 命令的解释器; 4. :支持由标准多媒体 I/O( mmio)函数提供的更高的命令来访问 AVI 文件;。毕业设计论文-局域网聊天系统的设计与实现
相关推荐
维护性高; ( 4) 程序简捷,便于修改。 设计原理 总体设计方案 方案一 : 本设计所使用的 16 16 的点阵, EDA 实验箱上有其接口电路,列选信号为SEL0, SEL1, SEL2,SEL3,经 4线 16线译码器输出 16 列,从左起为第一列,列选信号是由一个 4 位向量 SEL[3..0]控制;行选信号为 H0~ H15,是由 16个行信号组成的,每一行由一个单独的位来控制
1、于真菌门,半知菌亚门。 在自然界中分布极广,对各种食用菌的致病力强,不仅危害菌丝体生长阶段,也危害食用菌子实体,它是生产中发生最普遍、危害性最严重的杂菌之一,不论制种还是栽培,也不论生料、熟料、发酵料、发菌期间均可发生,甚至在出菇阶段也有发生,个别品种如草菇的菌种在完成发菌后亦可发生该种杂菌,并且发生的温度范围也越来越广,不少地区的银耳、香菇,近年的平菇、鸡腿菇等生产中曾发生毁灭性的污染
前,农村种植平菇产量不高的主要原因是平菇采收后其培养料含水量过低。 如何使培养料保湿,多产菇,就成为平菇能否高产的重要因素。 菌棒墙式覆土保湿:在棚内按菌袋的长度铺设一条 1520厘米厚的土埂,把发好菌即将出菇的菌袋脱去塑料袋。 将菌棒整齐排放在土埂上。 每排一层覆上34厘米厚的土,土两侧喷水并用泥抹平。 然后再排放第二层菌棒并覆土,可排放 69层,最上一层仍要覆土并抹平。 做好墙后喷一次大水
1、部曲”(三)立“预防”概念:就是要强调“预防为主,防治结合”的防治原则,棚内可使用百病去无踪、辛硫磷等药物,一般用量为 1 袋百病去无踪配 50 克辛硫磷,喷 30 平方米左右,用药目标为地面、墙体以及立柱等,要求地毯式喷洒,然后密封菇棚,卷起草苫晒棚,密封 2 天后即可进袋发菌或出菇;发菌和出菇期间的预防用药,可每 5 天左右喷洒一次蘑菇杀病灵或百病去无踪,但要注意不要直喷子实体。
1、部曲”(二)第一,选好菌种。 今年秋季主要应用品种有:平菇:“8359、农科 12”菌温度 536,最适 2428;出菇温度 525,最佳 1820;丛生或覆瓦状叠生,小厚叶片、大朵型,菌盖灰至深灰色,菌柄细短,菌褶白色、细密,朵形紧凑,菌肉紧实,商品性好;该两个菌株抗杂抗病力强,一般生产中不会感染黄菇病等病害,丰产性好,一般生物学效率可达150%以上,试验中第一潮菇最高超过 182%
虚拟仪器的概念 [7],是美国国家仪器公司 ( National Instruments Corp 以下简 NI公司 ) 于 1986 年提出的。 NI 公司同时也提出了“软件即仪器”的概念,打破了传统仪器只能由厂家定义,用户无法改变的局面。 随着现代软件和硬件技术的飞速发展,仪器的智能化和虚拟化已经成为研究的方向。 虚拟仪器,它既具有传统仪器的功能,又有别于 其他传统仪器