摘要: ActiveX控件的底层实现是基于COM技术的。任何一个控件都有自身的属性、方法、事件。那么我们自己在开发ActiceX空间的时候,也可以为其添加属性、方法、事件,这些属性、方法、事件不仅包括标准的属性、方法、事件也包括自定义的属性、方法、事件。我们先在VS中建立MFC ActiveX Control的应用程序。然后我们就可以开发自己的ActiveX控件了。 一、注册控件 开发的控件或者系统安装的控件可以在任何程序开发环境是使用,使用之前必须先进行注册,向注册表写入信息,否则开发环境是无法知道系统中的控件的。我们自己开发的控件在编译过程中会自动调用regsvr32应用程序为我们的控件进行注册。在我们的开发环境中用于注册的操作时通过DllRegisterServer()函数实现的,响应的反注册函数为DllUnregisterServer(),当然我们也可以手动的注册、反注册我们的ActiveX控件,方法是在运行进程中输入regsvr32 E:\studio\Clock\Debug\Clock.ocx 反注册regsvr32 /u E:\studio\Clock\ 阅读全文
posted @ 2011-10-26 13:44 乘风736 阅读(2114) 评论(2) 推荐(0) 编辑
摘要: 前面介绍了进程间通信的两种方法:剪贴板和匿名管道。这两种进程间通信的方法只能在本地主机的进程之间通信。而匿名管道还限制通信的两进程之间必须有父子关系。在开发网络间不同进程之间相互通信的应用程序时,我们可以用命名管道和邮槽。这两种方法不仅支持本地主机通信也支持网间进程通信。下面详细介绍这两种方法: 一、命名管道 将命名管道作为网络通信的方案时,他实际上建立了一个客户机/服务器通信体系,并在其中可靠的传输数据。命名管道式围绕Windows文件系统设计的一种机制,采用“命名管道文件系统借口”,因此客户机和服务器可利用标准的Win32文件系统函数来进行数据的收发。在利用命名管道进行通信时,服务器是唯一一个有权建立命名管道的进程,可以接收客户机的连接请求,客户机只能同一个现有的命名管道客户机建立连接。命名管道提供了两种基本的通信模式:字节模式和消息模式。在实际编程过程中可以根据实际需要选择不同的通信模式。利用命名管道进行通信可以按照下面的步骤进行: 阅读全文
posted @ 2011-10-19 11:16 乘风736 阅读(2132) 评论(3) 推荐(2) 编辑
摘要: 本地主机的不同进程之间以及网络间不同进程之间是如何通信的呢?下面将详细介绍进程间的通信。 进程间通信常用的有以下几种方法:(1)剪贴板;(2)匿名管道;(3)命名管道;(4)邮槽。这四种方法又可以分为两大类,剪贴板和匿名管道只能在本地主机的各进程间通信,而命名管道和邮槽不仅可以在本地主机的各进程间通信也可以在网络中不同进程之间进行通信。本篇只介绍剪贴板和匿名管道。 一、剪贴板 剪贴板是操作系统系统维护的一块内存区域,本地主机的任何进程都可以访问剪贴板,因此通过剪贴板这个中介本地主机的各进程之间就可以方便的通信。通过剪贴板进行进程间的通信,可用过下面的步骤实现: 二、匿名管道 通过匿名管道进行通信的进程必须是本地主机上有父子关系的进程。也就是说匿名管道只支持父子进程之间的通信。所以可以在父进程中调用子进程完成通信。这样的模式类似于服务器/客户机模式。通过匿名管道进行通信,也可以通过下面的步骤进行: 阅读全文
posted @ 2011-10-18 23:43 乘风736 阅读(2311) 评论(1) 推荐(1) 编辑
摘要: Windows套接字在两种模式下执行I/O操作,一种是阻塞模式,一种是非阻塞模式。在阻塞模式下,在I/O操作完成之前,执行I/O操作的Winsock函数会一直等待下去,不会立即返回程序,将控制权交回程序。在非阻塞模式下,Winsock函数都会立即返回。 在非阻塞模式下编程,使用的技术是基于消息的异步套接字。由于Windows是基于消息的,我们可以让Winsock函数立即返回。当指定的消息到来时,可以通过发送消息,在指定的消息响应函数中完成响应的操作。 Windows Sockets的异步选择函数WSAAsyncSelect()提供了消息机制的网络事件选择,当使用它登记的网络事件发生时,Windows应用程序相应的窗口函数将收到一个消息,消息中指示了发生的网络事件,以及与事件相关的一些信息。我们可以通过这个函数来注册网络事件。 阅读全文
posted @ 2011-10-16 23:06 乘风736 阅读(4702) 评论(0) 推荐(0) 编辑
摘要: 最近学习了网络编程,在学习多线程技术后,就尝试着用多线程技术写了一个网络聊天程序。下面介绍一下具体的实现过程。 既然是聊天程序,肯定要发送数据和接收数据,这里我新创建了一个线程来接收数据,用主线程来发送数据。同一个进程中的两个线程可以独立运行并相互交通信。因此可以实现数据的接收和发送。 先建立一个基于对话框的应用程序,并在对话框上放置接收数据的编辑框、发送数据的编辑框、目的主机的IP地址控件、发送按钮等相应控件,并修改其ID值。然后开始添加代码,实现网络聊天程序。 阅读全文
posted @ 2011-10-16 21:30 乘风736 阅读(5623) 评论(2) 推荐(1) 编辑
摘要: 在上一篇《网络编程——多线程技术》中已经说过,在一如多线程技术之后,在一个进程中可以创建多个线程,这多个线程在需要访问同一个资源时,肯定会发生争用现象,在争夺资源的过程中,假如第一个线程先访问这一资源,并对其做了修改,在这个线程没有执行完毕但时间片到了,第二个线程又访问该资源,就可能得到错误的结果。这是非常严重的问题。为了解决这一问题,引入了进程同步的概念。实现线程同步,可以有多种方法。在《网络编程——多线程技术》的火车票售票程序我们使用了创建互斥对象来实现线程同步。这里再介绍另外两种实现线程同步的方法:分别是事件对象和关键代码段(也成为临界区)。下面详细介绍这两种线程同步的方法: 假如线程1拥有资源A的访问权等待资源B才能运行,而线程2拥有资源B而要获得资源A才能运行。但是二者都不愿意先释放自己拥有的资源,这样就一直僵持下去,这样就造成了线程死锁。线程死锁的经典问题就是“哲学家进餐问题”。 阅读全文
posted @ 2011-10-15 12:00 乘风736 阅读(3683) 评论(1) 推荐(3) 编辑
摘要: 多线程共存于应用程序中是现代操作系统中的基本特征和重要标志。为了提高程序的运行效率,在操作系统中提出了进程和线程的概念,在一个进程中可以包含多个线程,进程作为资源分配的基本单位,线程作为独立运行和独立调度的基本单位。既然提到了进程和线程,就涉及到进程(线程)的并发执行以及互斥对象的访问。这些在网络编程中都是十分重要的知识点。具体操作系统的知识就不做介绍了,下面通过实例详细介绍网络编程中的多线程技术。 阅读全文
posted @ 2011-10-14 13:08 乘风736 阅读(9595) 评论(2) 推荐(2) 编辑
摘要: 网络编程——字符界面的网络聊天程序 上一次介绍了基于TCP的网络应用程序和基于UDP的网络应用程序的设计方法,下面通过一个实例介绍网络编程的实际运用。下面介绍一下字符界面的网络聊天程序的实现。 字符界面的网络聊天程序是网络编程的实际应用,具体的实现方法在前面已经详细介绍了TCP和UDP的网络程序的实现步骤。该程序的实现也分为服务器和客户端设计。先附上服务器端代码和客户端代码: 阅读全文
posted @ 2011-10-13 23:33 乘风736 阅读(752) 评论(1) 推荐(0) 编辑
摘要: 网络编程——基于TCP的程序设计和基于UDP的程序设计 网络编程可分为基于TCP的网络程序设计和基于UDP的网络程序设计。TCP是基于字节流的面向连接的,常用于可靠的网络传输,而UDP是基于数据报的无连接的网络传输,常用语即时通信。 无论是基于TCP或者是基于UDP的程序设计,它都是有固定的步骤可循的。只要理解这些步骤,实现起来也是比较简单的。下面将介绍基于TCP和UDP的网络编程的详细步骤以及实现实例。 在介绍网络编程之前,首先要说明一点:Winsock函数是Windows提供的网络编程的借口,无论是基于TCP的还是UDP的网络编程,在程序设计之前,都要首先加载Winsock库。 阅读全文
posted @ 2011-10-12 15:13 乘风736 阅读(3244) 评论(0) 推荐(0) 编辑
摘要: Win.ini文件和注册表编程 应用程序的配置信息可以放在注册表文件中,但是在以前的16位操作系统下,配置信息放在Win.ini文件中。下面介绍一下Win.ini文件的读写方法和注册表的编程。 阅读全文
posted @ 2011-10-07 14:23 乘风736 阅读(1475) 评论(0) 推荐(0) 编辑