消息机制与事件处理

VC++ MFC按钮控件:从消息机制到动态创建与事件处理实战 在Windows桌面应用开发中,消息驱动模型是GUI编程的核心基础。操作系统通过消息队列和窗口过程(WndProc)实现用户输入与应用程序的交互,这一原理构成了所有控件响应的底层机制。MFC框架通过消息映射机制对此进行了封装,将繁琐的窗口过程转化为直观的成员函数映射,极大提升了开发效率。这种封装不仅简化了事件处理流程,也为构建复杂桌面应用提供了稳定基础。按钮控件作为最常用的交互元素,其创建方式分为静态资源编辑和动态代码生成两种。静态创建适用于界面固定的场景,而动态创建则提供了运行时灵活布局的能力,两者都需要 阅读详情

原文https://www.jianshu.com/p/7f98111715f3

前言

什么是消息?

要更好地使用C++进行Windows编程,就需要进一步了解其消息机制。在Windows应用程序中,事件驱动是围绕着消息的产生和处理展开的,消息是对发生的事件的描述信息。消息通知程序有关事件的发生。一条消息包含有消息的名字、标识、消息发生时的一些参数,以及处理这条消息的函数入口指针。每当用户进行某种操作,比如鼠标单击或键盘按键,就会触发相应的事件。而事件是以消息的方式通知Windows应用程序的。一旦应用程序获得某条消息,就根据消息映射表查找相应消息的响应函数的入口地址,调用该函数处理消息,完成用户预期的功能。

1.2 在哪里产生消息?在哪里对消息进行响应?

在Windows操作系统中,应用程序主要以窗口的形式存在。窗口是一个可视的人机交互界面,用来接收各种事件,如用户键盘/鼠标事件、外设的请求事件、定时器的请求事件、信号量的请求事件等。因此,它也就成为应用程序控制消息的发送端和接收端。即Windows应用程序是围绕窗口进行的,窗口不仅提供了可视化的应用程序的界面,也是Windows消息的产生和响应的地方。

1.3 Windows系统如何实现消息机制?

消息的产生是由于相应的事件被触发;消息的发送以队列形式进行;消息响应遵循一定的顺序。MFC类库为这种消息响应机制提供了完整的处理功能。MFC类库中的很多类都具有处理相应消息的功能。在面向过程的程序设计方式中,对外设,比如鼠标、键盘等的控制是通过轮询方式进行,即分别定时查询这些设备的输入请求来完成的。而在Windows环境中,这些控制是通过消息机制完成的。因此,Windows也被称为“基于事件驱动的、消息机制的”操作系统。消息机制是Windows能进行多任务并发处理的基础,它保证了Windows下同时运行的程序能够协同作业。
在Windows中,应用程序都包含一个消息循环。该消息循环持续反复检测消息队列,查看是否有用户事件消息,这些用户事件消息包括鼠标移动、单击、双击、键盘操作和计时器到达等。事实上,这些事件首先被Windows系统接收到。当Windows接收到这些事件后,会产生一些相应的描述事件的消息,并且将这些消息分发到相应的应用程序。应用程序接到这些消息后,根据不同的消息查询消息映射,调用其相应的消息响应函数,完成一定的功能与过程。这一系列动作称之为消息响应。

2. Calling机制

调用(calling)机制从汇编时代起已经大量使用:准备一段现成的代码,调用者可以随时跳转至此段代码的起始地址,执行完后再返回跳转时的后续地址。CPU为此准备了现成的调用指令,调用时可以压栈保护现场,调用结束后从堆栈中弹出现场地址,以便自动返回。借堆栈保护现场真是一项绝妙的发明,它使调用者和被调者可以互不相识,于是才有了后来的函数和组件,使吾辈编程者如此轻松愉快。

3. Callback机制

调用机制并非完美。回调函数就是一例。函数之类本是为调用者准备的美餐,其烹制者应对食客了如指掌,但实情并非如此。例如,写一个快速排序函数供他人调用,其中必包含比较大小。麻烦来了:此时并不知要比较的是何类数据–整数、浮点数、字符串?于是只好为每类数据制作一个不同的排序函数。 更通行的办法是在函数参数中列一个回调函数地址,并通知调用者:君需自己准备一个比较函数,其中包含两个指针类参数,函数要比较此二指针所指数据之大小,并由函数返回值说明比较结果。排序函数借此调用者提供的函数来比较大小,借指针传递参数,可以全然不管所比较的数据类型。被调用者回头调用调用者的函数(够咬嘴的),故称其为回调(callback)。

回调函数使程序结构乱了许多。Windows API函数集中有不少回调函数,尽管有详尽说明,仍使初学者一头雾水。恐怕这也是无奈之举。无论何种事物,能以树形结构单向描述毕竟让人舒服些。如果某家族中孙辈又是某祖辈的祖辈,恐怕无人能理清其中的头绪。但数据处理之复杂往往需要构成网状结构,非简单的客户/服务器关系能穷尽。

4. 操作系统与应用程序的关系——广义回调/消息机制

Windows系统还包含着另一种更为广泛的回调机制,即消息机制。消息本是Windows的基本控制手段,乍看与函数调用无关,其实是一种变相的函数调用。发送消息的目的是通知收方运行一段预先准备好的代码,相当于调用一个函数。消息所附带的WParam和LParam相当于函数的参数,只不过比普通参数更通用一些。应用程序可以主动发送消息,更多情况下是坐等Windows发送消息。一旦消息进入所属消息队列,便检感兴趣的那些,跳转去执行相应的消息处理代码。操作系统本是为应用程序服务,由应用程序来调用。而应用程序一旦启动,却要反过来等待操作系统的调用。这分明也是一种回调,或者说是一种广义回调。
其实,应用程序之间也可以形成这种回调。假如进程B收到进程A发来的消息,启动了一段代码,其中又向进程A发送消息,这就形成了回调。 这种回调比较隐蔽,弄不好会搞成递归调用,若缺少终止条件,将会循环不已,直至把程序搞垮。若是故意编写成此递归调用,并设好终止条件,倒是很有意思。但这种程序结构太隐蔽,除非十分必要,还是不用为好。

5. 同步调用与异步调用

利用消息也可以构成狭义回调。上面所举排序函数一例,可以把回调函数地址换成窗口handle。如此,当需要比较数据大小时,不是去调用回调函数,而是借API函数SendMessage向指定窗口发送消息。收到消息方负责比较数据大小,把比较结果通过消息本身的返回值传给消息发送方。所实现的功能与回调函数并无不同。当然,此例中改为消息纯属画蛇添脚,反倒把程序搞得很慢。但其他情况下并非总是如此,特别是需要异步调用时,发送消息是一种不错的选择。假如回调函数中包含文件处理之类的低速处理,调用方等不得,需要把同步调用改为异步调用,去启动一个单独的线程,然后马上执行后续代码,其余的事让线程慢慢去做。一个替代办法是借API函数PostMessage发送一个异步消息,然后立即执行后续代码。这要比自己搞个线程省事许多,而且更安全。

6. 事件与对象

如今我们是活在一个object时代。只要与编程有关,无论何事都离不开object。但object并未消除回调,反而把它发扬光大,弄得到处都是,只不过大都以事件(event)的身份出现,镶嵌在某个结构之中,显得更正统,更容易被人接受。应用程序要使用某个构件,总要先弄清构件的属性、方法和事件,然后给构件属性赋值,在适当的时候调用适当的构件方法,还要给事件编写*处理例程,以备构件代码来调用。何谓事件?它不过是一个指向事件例程的地址,与回调函数地址没什么区别。
不过,此种回调方式比传统回调函数要高明许多。首先,它把让人不太舒服的回调函数变成一种自然而然的处理例程,使编程者顿觉气顺。再者,地址是一个危险的东西,用好了可使程序加速,用不好处处是陷阱,程序随时都会崩溃。现代编程方式总是想法把地址隐藏起来(隐藏比较彻底的如 VB 和 Java),其代价是降低了程序效率。事件例程使编程者无需直接操作地址,但并不会使程序减速。更妙的是,此一改变,本是有损程序结构之奇技怪巧变成一种崭新设计理念,不仅免去被人抨击,而且逼得吾等凡人净手更衣,细细研读,仰慕至今。

7. 消息与事件的区别

事件是一个动作——用户触发的动作。
消息是一个信息——传递给系统的信息。
事件与消息的概念在计算机中较易混淆,但本质不同:
事件由用户触发且只能由用户触发,操作系统能够感觉到由用户触发的事件,并将此事件转换为一个特定的消息发送到程序的消息队列中。
这里强调的是
可以说“用户触发了一个事件”,而不能说“用户触发了一个消息”。
用户只能触发事件,而事件只能由用户触发。
一个事件产生后,将被操作系统转换为一个消息,所以一个消息可能是由一个事件转换而来或者由操作系统产生。
总结事件和消息的来源
事件:只能由用户通过外设的输入产生。
消息:产生消息的来源有三个
(1) 由操作系统产生。
(2) 由用户触发的事件转换而来。
(3) 由另一个消息产生。
注: 上述描述似乎不太严谨,如定时器事件应该算是内部事件,并非用户产生。

个人总结

程序是数据的流动。所有的编程技术(tricks)都在往两个方面去努力:

减少时间消耗——时间调度算法(操作系统、进程、线程)
减少内存(空间)消耗——内存管理
时间与空间互换与平衡
在开发效率和执行效率之间寻求平衡(trade-off)


事件驱动机制跟消息驱动机制相比
事件: 按下鼠标,按下键盘,按下游戏手柄,将U盘插入USB接口,都将产生事件。比如说按下鼠标左键,将产生鼠标左键被按下的事件。
消息: 当鼠标被按下,产生了鼠标按下事件,windows侦测到这一事件的发生,随即发出鼠标被按下的消息到消息队列中,这消息附带了一系列相关的事件信息,比如鼠标哪个键被按了,在哪个窗口被按的,按下的坐标是多少?如此等待。

  1. 要理解事件驱动和程序,就需要和非事件驱动的程序进行比较。实际上,现代的程序大多是事件驱动的,==比如多线程的程序,肯定是事件驱动的。早期则存在许多非事件驱动的程序,这样的程序,在需要等待某个条件触发时,会不断地检查这个条件,直到条件满足,这是很浪费cpu时间的。==而事件驱动的程序,则有机会释放cpu从而进入到睡眠态(注意是有机会,当然程序也可自行决定不释放cpu),当事件被触发时被操作系统唤醒,这样就能更加有效地使用cpu。
  2. 再说什么是事件驱动的程序。一个典型的事件驱动的程序,就是一个死循环,并以一个线程的形式存在,这个死循环包括两个部分,第一个部分是按照一定的条件接收并选择一个要处理的事件,第二个部分就是事件的处理过程。程序的执行过程就是选择事件和处理事件,而当没有任何事件触发时,程序会因查询事件队列失败而进入睡眠状态,从而释放cpu。
  3. 事件驱动的程序,必定会直接或间接拥有一个事件队列,用于存储未能及时处理的事件。
  4. 事件驱动的程序的行为,完全受外部输入的事件控制,所以,事件驱动的系统中,存在大量这种程序,并以事件作为主要的通信方式。
  5. 事件驱动的程序,还有一个最大的好处,就是可以按照一定的顺序处理队列中的事件,而这个顺序则是由事件的触发顺序决定的,这一特性往往被用于保证某些过程的原子化。
  6. 目前windows,linux,nucleus,vxworks都是事件驱动的,只有一些单片机可能是非事件驱动的。

事件模式耦合高,同模块内好用;消息模式耦合度低,跨模块好用。事件模式集成其它语言比较繁琐,消息模式集成其他语言比较轻松。事件是侵入式设计,霸占你的主循环;消息是非侵入式设计,将主循环该怎样设计的自由留给用户。如果你在设计一个东西举棋不定,那么你可以参考win32的GetMessage,本身就是一个耦合度极低的接口,又足够自由,接口任何语言都很方便,具体应用场景再在其基础上封装成事件并不是难事,接口耦合较低,即便哪天事件框架调整,修改外层即可,不会伤经动骨。而如果直接实现成事件,那就完全反过来了。

基于消息队列的事件处理机制设计 消息队列在嵌入式系统中的关键作用,介绍了基于环形缓冲区的轻量级实现方案。文章详细解析了消息结构设计(msg_node_t)、队列管理(msg_driver_t)和核心功能(发布/获取/处理事件),并通过实例演示了消息队列的解耦优势。该方案采用静态内存分配,避免了资源碎片,适合实时性要求高的场景,为嵌入式开发提供了可扩展的事件驱动框架,既适用于裸机系统也易于移植到RTOS环境。 阅读详情

相关推荐

SpringBoot学习之Spring消息事件处理机制(十五)

1. 使用ApplicationEventPublisher 发布事件 复制下面全部代码,右键包名,粘贴即可生成java类,执行即可看到效果。 事件机制: 需要自定义一个事件类继承ApplicationEvent; 需要自定义一个监听器类实现ApplicationListener接口,或普通类的方法中使用@EventListener注解; 使用默认发布器ApplicationEventPublisher发布即可; 事件类不需要注入到IOC;监听器需要注入到IOC;ApplicationEventPubl

徐泗空的博客 856

事件和消息的区别

事件是一个动作——用户触发的动作。 消息是一个信息——传递给系统的信息。 事件与消息的概念在计算机中较易混淆,但本质不同: 事件由用户(操作电脑的人)触发且只能由用户触发,操作系统能够感觉到由用户触发的事件,并将此事件转换为一个(特定的)消息发送到程序的消息队列中。 这里强调的是: 可以说“用户触发了一个事件”,而不能说“用户触发了一个消息”。 用户只能触发事件,而事件只能由用户触发。 一个事件产生后,将被操作系统转换为一个消息,所以一个消息可能是由一个事件转换而来(或者由操作系统产生)。 一个消息可.

顺其自然~专栏 2656

FreeRTOS OTA实战:从Bootloader设计到安全升级的完整流程(附MQTT示例代码)

本文详细介绍了在FreeRTOS系统中实现安全OTA固件升级的完整流程。内容涵盖从Bootloader设计、存储分区规划到与MQTT协议集成的OTA Agent任务开发,并重点解析了固件签名验证、防回滚等关键安全机制,为嵌入式物联网设备提供了一套高可靠性的远程升级解决方案。

weixin_29248653的博客 158

事件和消息的使用区别

在Windows系统里定义了事件和消息。消息又分异步消息和同步消息。一般来说,SendMessage是同步消息,需要等待结果返回;PostMessage是异步消息,发送完就不管了结果,对于结果,可能是需要监听某种事件来处理。 通俗来说: 事件是一个动作——用户触发的动作,事件总是和一个ID有关,事件就是“当....的时候”;消息是一个信息——传递给系统的信息,消息就是“嗨!你该干...

军说网事 3042

非华为设备实现多屏协同:最新电脑管家破解安装指南

本文提供了在非华为电脑上安装华为电脑管家并实现多屏协同功能的详细破解指南。通过绕过硬件检测机制,用户可在联想、戴尔等设备上体验与华为生态类似的无缝文件拖拽、跨屏操作等功能。文章涵盖了从系统准备、工具下载、破解安装到手机连接及故障排查的全流程,助您打破设备壁垒,提升办公效率。

weixin_29209805的博客 1133

C++常见面试题总结

C++常见面试题总结

xu_fu_yong的专栏 8万+

我来区分事件与消息(个人理解)

事件是一个动作——用户触发的动作,如单击鼠标,敲击键盘,插入U盘,打开光驱等。一个事件或动作有其发生的时间地点,如单击鼠标有其单击时间和单击时光标所在窗口位置。消息是一个信息——传递给系统的信息,很大程度上,消息是对事件的一种封装和描述。如鼠标单击了一个按钮,产生一个单击按钮的消息,该消息封装了鼠标单击按钮事件的全部信息。当然,有些消息并不一定会对应一个事件,这样的消息是为了窗口间通信而建立的。

Gun_1986的专栏 823

利用Solidworks2020将挖掘机装配体转换为URDF模型

利用Solidworks2020将挖掘机装配体转换为URDF模型一、下载sw_urdf_exporter插件 URDF(Universal Robot Description Format)——通用机器人描述格式,它是ROS里边使用的一种机器人的描述文件,包含的内容有:连杆、关节,运动学和动力学参数、可视化模型、碰撞检测模型等。 一、下载sw_urdf_exporter插件 ROS提供了SolidWorks转URDF的插件(下载链接)—sw2urdfSetup.exe,下载后点击安装,安装完成后就能在sol

weixin_48192326的博客 6100

事件与消息

简单理解 事件(Event)是一个动作——用户触发的动作。 消息(Message)是一个信息——传递给系统的信息。 事件与消息的概念在计算机中较易混淆,但本质不同: 事件由用户(操作电脑的人)触发且只能由用户触发,操作系统能够感觉到由用户触发的事件,并将此事件转换为一个(特定的)消息发送到程序的消息队列中。 这里强调的是: 可以说“用户触发了一个事件”,而不能说“用户触发了一个消息”。 用户只能触发事件,而事件只能由用户触发。 一个事件产生后,将被操作系统转换为一个消息,所以一个消息可能是由一个事件转换而来

我的博客 1011

【100%通过率】华为OD机试真题 Python 实现【投篮大赛】【2022.11 Q4 新题】

你现在是一场采用特殊赛制投篮大赛的记录员。这场比赛由若干回合组成,过去几回合的得分可能会影响以后几回合的得分。比赛开始时,记录是空白的。你会得到一个记录操作的字符串列表 ops,其中ops[i]是你需要记录的第i项操作,ops遵循下述规则: 整数x-表示本回合新获得分数x “+” – 表示本回合新获得的得分是前两次得分的总和。 “D” – 表示本回合新获得的得分是前一次得分的两倍。 “C” – 表示本回合没有分数,并且前一次得分无效,将其从记录中移除。 请你返回记录中所有得分的总和。

MISAYAONE的博客 1万+

MathType公式使用技巧汇总——Mathtype怎么在word中编辑公式?论文中公式有哪技巧?有哪些注意事项?论文中的公式怎么写?

如果word中到公式编号(2-1)中间的符号如下图........ .......类似与省略号的,这是手动打的空格,公式和编号的位置都是手动敲空格操作的,这种就只是使用MathType写了公式而已,格式上还是很不方便的。**如果要修改公示,直接双击文档中的公式,就会自动弹出MathType公式编辑窗口,进行修改。如果要修改公示,直接双击文档中的公式,就会自动弹出MathType公式编辑窗口,进行修改。而第二种,是公式里面带的括号符号,他是可以随着公式结构自适应变化的。这时需要将公式插入到一行文字的某处,

程序员,他们想的是什么?他们想的永远都是技术,他们崇尚的也永远都是技术。 5万+

纯理论的消息与事件探讨

以下文字,仅是个人学习心得,不对之处,欢迎批评指正: 了解事件和消息,首先要了解其基本概念,其次要了解操作系统特性、操作系统的事件与消息、和应用软件三者之间的因果关系。 一、 事件与消息 事件是什么,简单的来说,事件是特定条件下的客观动作状态。 消息是什么,简单的来说,消息是特定事件发生后产生的多种行为方式之一。 二、操作系统中事件、消息与应用程序的关系 1、在DOS时代,操作系统是一...

eedos的专栏 578

Calibre 3Dstack --每日一个命令day27【overlap】(3-27)

本文介绍了Calibre3Dstack中overlap命令的使用方法。该命令用于检查两个已放置层之间的重叠量是否符合要求,支持设置检查名称、层类型、堆叠范围、检查方向等参数。关键参数包括:-constraint指定重叠约束条件,-exact控制百分比精度,-by_area切换为面积检查模式,-intersection报告相交区域。检查结果可通过RVE选项定制显示方式,适用于3D堆叠设计中的层间重叠验证场景。

u013620135的博客 112

Qt事件处理机制(系统消息)

Qt事件处理机制(系统消息)你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你用它写博客:撤销:Ctrl/Command + Z 重做:Ctrl/Command + Y 加粗:Ctrl/Command + B 斜体:Ctrl/Command + I 标题:Ct

weixin_43754520的博客 2213

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

事件处理机制与Handler消息传递机制

一、基于监听的事件处理机制 基于监听的时间处理机制模型: 事件监听机制中由事件源,事件,事件监听器三类对象组成 处理流程如下: Step 1:为某个事件源(组件)设置一个监听器,用于监听用户操作 Step 2:用户的操作,触发了事件源的监听器 Step 3:生成了对应的事件对象 Step 4:将这个事件源对象作为参数传给事件监听器 step 5:事件监听器对事件对象...

weixin_30256505的博客 243

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

Koog事件处理:EventHandlerContext消息传递机制

在AI智能体开发中,事件处理机制是构建响应式、可观测系统的核心。Koog框架通过`EventHandlerContext`体系提供了一套完整的事件驱动架构,让开发者能够精准监控和响应智能体工作流的每一个关键节点。 本文将深入解析Koog的事件处理机制,重点探讨`EventHandlerContext`的消息传递机制、核心组件实现,以及如何在实际项目中高效利用这一强大功能。 ## EventHa...

gitblog_00114的博客 777

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

事件处理方式 && 消息传递机制

所有的android事件,都是通过底层驱动将事件整理成Message放入到相应的MessageQueue,再通过Looper来分发,最终到达控件或者Activity的监听器或者事件处理函数。 基于监听的事件处理     为组件绑定特定的事件监听器。View.setOnClickListener(OnClickListener);     Event Source\ Event\ Even

897

Windows Forms 事件处理机制:深入理解消息循环与事件传递

Windows Forms 作为 .NET 框架中最经典的桌面应用开发技术,其核心的事件处理机制是每个开发者必须掌握的重要知识。本文将带你深入探索 Windows Forms 的消息循环工作原理和事件传递过程,帮助新手快速理解这一关键技术。🚀 ## 什么是 Windows Forms 事件处理机制? Windows Forms 事件处理机制是基于 Windows 消息循环的系统,它负责接收操

gitblog_00621的博客 680

《QT学习笔记 —— 17. QT中消息处理机制和事件处理方式》

1、图形界面应用程序的消息处理模型 特点: 基于操作系统才能运行; GUI应用程序提供的功能必须由用户触发; 用户操作界面时操作系统是第一个感知的 ; 系统内核的消息通过事件处理转变成QT的信号。 2. Qt中的事件处理 (1)在Qt中,事件被封装成一个个对象,所有的事件均继承自抽象类QEvent. 事件处理的核心包括事件产生、分发、接受和处理。 ①事件的产生 问题:谁来产生事件? ...

zhubao124的博客 405

Qt 之 消息机制和事件处理方式

转自:http://www.cnblogs.com/zhaobinyouth/p/7688954.html 1、图形界面应用程序的消息处理模型 特点: 基于操作系统才能运行; GUI应用程序提供的功能必须由用户触发; 用户操作界面时操作系统是第一个感知的 ; 系统内核的消息通过事件处理转变成QT的信号。 2. Qt中的事件处理 (1)在Qt中,事件被封装成一个个对象,所有的事件均继承自抽象类QEv...

kevin_org 2664

Omegle Traffic Bot事件处理机制:等待消息与打字事件的智能触发

Omegle Traffic Bot是一款功能强大的自动化工具,专为高效管理Omegle会话而设计。其核心优势在于灵活的事件处理机制,能够智能响应"等待消息"和"打字事件"两种交互场景,帮助用户实现自动化消息发送与会话管理。本文将深入解析这两种事件触发模式的工作原理、配置方法及实际应用场景。 ## 事件处理机制核心原理 Omegle Traffic Bot的事件处理系统基于**条件触发机制**

gitblog_00657的博客 720

扫雷游戏事件处理机制:Windows消息循环与Rust异步编程的完美结合

minesweeper-rs是一个使用Rust语言和windows-rs库实现的经典扫雷游戏项目,它展示了如何将传统的Windows消息循环与现代Rust编程语言相结合。本文将深入解析这个扫雷游戏的事件处理机制,探讨Windows消息循环的工作原理以及Rust异步编程在GUI应用中的实际应用。 ## 🎯 Windows消息循环:GUI应用的核心引擎 在Windows GUI编程中,**消息循

gitblog_00901的博客 865

OSG消息机制之事件处理概述

  OSG的消息机制包括好多个头文件预定义及多个类。   首先,消息接收相关的类当属osgGA::GUIEventHandler和osgGA::GUIEventAdapter这两个类了。前者处理OSG程序与用户交互,处理事件,事件全靠handle这个函数。此函数的定义: 重载1: virtual bool handle(osgGA::Event* event, osg::Object...

718
上一篇: HTML5 Web 存储
下一篇: 知识点小悟2019-1-18
It_sharp
博客等级 码龄10年 51粉丝 231原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值