uC_的GUI 窗体管理及消息处理机制分析.doc

  1. 1、本文档共17页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
uC_的GUI 窗体管理及消息处理机制分析

UCGUI 窗体管理及消息处理机制分析 1 各种基本消息介绍及处理流程 2 UCGUI 中一些基本的消息如下: 2 WM_CREATE---窗体创建消息 2 WM_SHOW-----显示窗体消息 2 WM_SET_ENABLE---设置窗体不能使用消息 2 WM_PAINT ----窗体重画消息 3 WM_TOUCH 3 WM_KEY 3 WM_SET_FOCUS 3 WM_NOTIFY_PARENT 4 WM_DELETE 4 WIDGET_HandleActive() 4 WM_DefaultProc() 5 WM_TOUCH 消息的处理流程如下: 14 GUI_PID_Load 14 GUI_PID_GetState 14 UCGUI 窗体管理及消息处理机制分析 ----多对话框/模态窗体/透明窗体支持分析 问题的提出: [求助]关于对话框处理程序中,想在 OK 按钮按下后想弹出一个消息框,该怎么做?直接加在程序中好像不行,如何让消息框弹出后成为模态窗体呢? 请版主帮帮忙。 [解析]在 UCGUI 中,对话框只支持单个对话框窗体,不支持多个独立的对话框,现在我们从其源码来分析一下它为什么支持单个对话框窗体以及如何改进它以支持多个独立对话框,要讲解这个问题我们必须首先理解 UCGUI中的窗体消息 LOOP,没有消息 LOOP 窗体就是死水一潭,不能接受任何外界的输 入,只是一个画在那里的图画而已。 [声明]本文中提到的源码均为 UCGUI3.24 版源码,新版 UCGUI 源码会有改动, 请下载本文示例代码来结合阅读本文。 摘要: 本文主要介绍了 UCGUI 中的对话框的消息处理机制,并指出在现有 UCGUI 上如何增加多窗体支持,并在分析解决问题时着重介绍了其输入设备消息 WM_TOUTCH 及 WM_KEY 两类消息处理方法,并同时初步指出一种在 UCGUI 中实现模 UCGUI 窗体管理及消息处理机制分析 态对话框以及透明窗体的原理说明,不还有窗体重画消息 WM_PAINT 消息处理原理。 各种基本消息介绍及处理流程 对话框内部消息流转及外部消息 LOOP 分 析. UCGUI 是采用的消息驱动的,它专门有对外的一套收集消息的接口, 在模拟器中, 就是通过 LCD 模拟显示屏窗口的 MOUSE 消息,将 MOUSE 消息传入到这个 接口中, 以驱动 UCGUI 中的窗体的。 UCGUI 中的消息驱动其实与 WINDOWS 的是类似的,几种基本的消息与 WINDOWS 是一样的,但 UCGUI 的更简单且消息更少,对于一些消息的处理得也很简化,没有 WINDOWS 那么多的消息种类及复杂处理。在 WINDOWS 中,如我们处理按钮控件的点击事件的是在 WM_COMMAND 消息中,通过按钮的标志 ID 来区分不同的按钮,所以 按钮标志 ID 必须不同的,否则无法区别开(除非不在父窗体的 WM_COMMAND 消息 中处理)。 UCGUI 中一些基本的消息如下: WM_CREATE---窗体创建消息 每创建一个窗体完后都会向该窗体发送此 消息,如 WM_CreateWindowAsChild 创建完窗体均会发一此消息,但在 UCGUI 中对于此消息的很少处理,如果用户想在对话框之后做些初始化 操作或是创建其它子窗体的动作,可以处理此消息,不过对话框一般有专门的初始化消息 WM_INIT_DIALOG,它是在创建对话框后发送的。 WM_SHOW-----显示窗体消息 此消息在 UCGUI 中各控件窗体内均未作处 理,如果你通过消息发送函数来发送这类没有在 UCGUI 中各窗体中处理 的消息,是没有有什么响应的,不要感到奇怪。要显示窗体一般是通过 WM_ShowWindow()函数实现的,这个函数做的也就是改变窗体显示标志 [WM_SF_ISVIS],并使窗体矩形区域无效[WM_InvalidateWindow()]以产生重画消息。 WM_SET_ENABLE---设置窗体不能使用消息 UCGUI 中有一种复选框为不 可改变的,但是这个功能也不完全,如果你对着 UCGUI 中的按钮使用 WM_DisableWindow()来设置其无效,按钮照样还是可以使用,不过要改进这些小毛病还是很容易的,这里只是提醒大家 UCGUI 中很多没有实现 的小地方,不要到时候使用时感到很奇怪,感觉到奇怪时最好去看看源码,看看源码中是否实现了此功能,不要郁闷。 WM_PAINT ----窗体重画消息 当窗体所在区域全部或是部分区域无效 时,系统将会发出该重画消息,将无效区域重画,但 UCGUI 中的处理比 较简单,都是将窗体全部区域重画;如果用户自己想在窗体上画上一些 信息,一般都在在该消息当中画,UCGUI 中的各种提供的系统控件都必须 在其

文档评论(0)

liwenhua00 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档