WEB开发网
开发学院软件开发VC 事件编程(一) 阅读

事件编程(一)

 2007-03-15 21:53:34 来源:WEB开发网   
核心提示:本文示例源代码或素材下载 在微软 .NET 框架中可以定义托管类事件并用委托和 += 操作符处理这些事件,这种机制似乎很有用,事件编程(一),那么在本机 C++ 中有没有办法做同样的事情?确实如此!Visual C++ .NET 具备所谓统一事件模型(Unified Event Model),它可以像托管类一样

本文示例源代码或素材下载

在微软 .NET 框架中可以定义托管类事件并用委托和 += 操作符处理这些事件。这种机制似乎很有用,那么在本机 C++ 中有没有办法做同样的事情?

确实如此!Visual C++ .NET 具备所谓统一事件模型(Unified Event Model),它可以像托管类一样实现本机事件(用 __event 关键字),但是由于本机事件存在一些不明显的技术问题,而微软的老大不打算解决这些问题,所以他们要我正式奉劝你不要使用它们。那么这是不是就是说 C++ 程序员与事件无缘了呢?当然不是!可以通过别的方法实现。本文我将向你展示如何轻松实现自己漂亮的事件系统。
  但是在动手之前,让我先大体上介绍一下事件和事件编程。它是个重要的主题,当今对事件没有坚实的理解,你是无法编写程序的——什么是事件以及什么时候使用事件。
  成功的编程完全在于对复杂性的掌控。很久以前,函数被称为“子程序”(我知道,我这样说证明我已经老了!)管理复杂性的主要方式之一是自顶向下的编程模式。高层实现类似“宇宙模型”,然后将它划分为更小的任务如:“银河系模型”以及“太阳系模型”等等,直到任务被划分为可以用单个函数实现为止。目前自顶向下的编程模型仍被用于过程化的任务实现当中,但它不适用于发生顺序不确定的实时事件响应系统。经典的例子便是 GUI,程序必须响应用户的某些行为,比如按键或是鼠标移动。实际上,事件编程很到程度上源于图形用户界面的出现。
  在自顶向下的模型中,在顶部的高级部分对低级的实现各种不同任务的函数——如 DoThis,DoThat 进行食物链式的调用。但不久以后,低层部分需要回调(talk back),在 Windows 中,可以调用 Rectangle 或 Ellipse 绘制一个矩形或椭圆,但最终 Windows 需要调用你的应用程序来画窗口。但应用程序都还不存在,它仍然处于被调用度状态!那么 Windows 如何知道要调用哪个函数呢?这就是事件用处之所在。

1 2 3 4 5  下一页

Tags:事件 编程

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接