Windows 基于消息的模式: 一旦程序启动,它只是简单地等待发送给它的消息,然后作出相应的响应。由 Windows 本身去检测是否有 一个键被按下或是否有鼠标移动。当这类事件发生时,Windows 就向程序发送一条预定义的消息,告诉它发 生了什么。程序一般都有响应消息或不理睬消息的选项。
  ·DOS 过程模式: C++ 代码通常是线性地执行,也就是从程序的开头到结束,每个时刻执行一行代码,或者转移到某行代 码,或者循环执行,以这几种方式运行各段代码。程序要想知道发生了什么,必须通过调用基于中断的子程 序。这些子程序是操作系统内部建立或由硬件实现的。子程序返回时,报告是否有一个键被按下或鼠标做了 移动。

  消息实际上只是在 WINDOWS.H 文件复合体中定义的常量,现在对此应不感到奇怪了。作为例子,下 面列出有关键盘处理和鼠标移动的消息说明:


// Keyboard messages
#define WM_KEYDOWN 0x0100 // Key was pressed
#define WM_KEYUP 0x0101 // Key was released
#define WM_CHAR 0x0102 // Processed keystroke
#define WM_DEADCHAR 0x0103 // Composite key
#define WM_SYSKEYDOWN 0x0104 // Alt key was pressed
#define WM_SYSKEYUP 0x0105 // Alt key was released
#define WM_SYSCHAR 0x0106 // Processed system keystroke
#define WM_SYSDEADCHAR 0x0107 // Composite system keystroke

// Mouse input messages
#define WM_MOUSEMOVE 0x0200 // Mouse was moved
#define WM_LBUTTONDOWN 0x0201 // Left button pressed
#define WM_LBUTTONUP 0x0202 // Left button released
#define WM_LBUTTONDBLCLK 0x0203 // Double click of left button
#define WM_RBUTTONDOWN 0x0204 // Right button pressed
#define WM_RBUTTONUP 0x0205 // Right button released
#define WM_RBUTTONDBLCLK 0x0206 // Double click of right button
#define WM_MBUTTONDOWN 0x0207 // Middle button down
#define WM_MBUTTONUP 0x0208 // Middle button up
#define WM_MBUTTONDBLCLK 0x0209 // Double click of middle button

  不要试图记住这些消息。只要大致看一看,熟悉一下它们的外观和所提供的服务类型就可以了。
  显然,关于消息本身并没有什么神秘之处。它们只是具有有用名字的简单常量,用来通知程序系统当前 的状态。当一个事件发生时,这些消息与其它有用的信息捆绑在一起发送给一个或多个应用程序窗口过程。





posted on 2006-07-20 11:53  阿米  阅读(468)  评论(0编辑  收藏  举报