uCGUI中的窗口管理机制以及解决独立窗口并存的方法.docxVIP

uCGUI中的窗口管理机制以及解决独立窗口并存的方法.docx

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
uCGUI中的窗口管理机制以及解决独立窗口并存的方法

修改UCGUI源代码以支持多个独立窗体的说明发布时间 : 2008-11-17??? 来源 : 来自网络??? 作者 :匿名 ??浏览 : 2868 问题的提出:关于对话框对话框处理程序中,ok按钮按下后想出现一个消息框。但直接加在程序中好像不行,该怎么办?[独立窗体]------指该窗体的父窗体不是用户创建窗体,在UCGUI中其父窗体为句柄为1.一,消息处理的流程.ucgui是采用的消息驱动的. 它专门有对外的一套采集消息的接口, 我在模似器中, 就是通过LCD窗口的MOUSE消息,将MOUSE移动, 点击消息传入到这个接口中, 以驱动UCGUI中的事件的..UCGUI中的消息驱动, 其实与WINDOWS的是类似的, 几种基本的消息与WINDOWS是一样的, 但UCGUI的更简单, 消息更少, 没有WINDOWS那么多的消息种类. 在WINDOWS中, 我们最简单处理按钮事件的是在WM_COMMAND消息中, 通过按钮的标志ID来处理不同的按钮, 所以, 我们的按钮的标志ID都是不同的. 要不然无*区别开的. 要处理点击OK这个按钮的事件, UCGUI的处理方*有些不同, 是在WM_NOTIFY_PARENT消息中处理:case WM_NOTIFY_PARENT:Id = WM_GetId(pMsg-hWinSrc); /* Id of widget */NCode = pMsg-Data.v; /* Notification code */switch (NCode) {case WM_NOTIFICATION_RELEASED: /* React only if released */if (Id == GUI_ID_OK) { /* OK Button */GUI_EndDialog(hWin, 0);}if (Id == GUI_ID_CANCEL) { /* Cancel Button */GUI_EndDialog(hWin, 1);}break;}break;ucgui中的消息非常的少, 只有差不多不到二十种, 其实这对于嵌入式系统来说, 已经完全足够了, 用户可以自定义消息, WM_NOTIFY_PARENT这个消息是由你窗体传送过来的, 是由函数WM_NotifyParent(hObj, Notification)实现的.void WM_NotifyParent(WM_HWIN hWin, int Notification) {WM_MESSAGE Msg;Msg.MsgId = WM_NOTIFY_PARENT;Msg.Data.v = Notification;WM_SendToParent(hWin, Msg);}这个函数相当简单, 其主要还是WM_SendToParent这个函数的调用, 这个函数又调用void WM_SendMessage(WM_HWIN hWin, WM_MESSAGE* pMsg), 这个函数是最基本的一个消息处理函数, 它的第一个参数指定了接受这个要处理的消息的句柄, 第二个指定了是什么消息.这个函数的主要作是, 是调用相就窗口的消息处理函数来处理消息.比如说, 在这里,我们这个消息的处理过程是这样的, 首先, 你左键点击OK按钮, 那么在GUI_Exec()这个窗体消息LOOP处理当中, 首先将此消息(WM_TOUCH)传给OK按钮(注意这也是一个窗体), 然后, OK按钮的消息处理函数将此消息再以WM_NOTIFY_PARENT传送到你窗体---对话框当中, 这样, 对话框就可以处理到点击OK按扭这个事件了...其实这个消息处理的流程与WINDOWS也是类似的. 原理一样..理解了这个过程, 那么, 我们就可以这个消息中处理很多东西了, 只要是在对话框中的子控件, 一般的消息都可以如此处理.二,发现存在的问题----两个独立的窗口并立时, 当关闭其中一个, 另外一个不再有响应.在如下代码中处理弹出消息框, 点击对话框的OK后弹出消息框, 会出现当按对话框的Cancel关闭对话框后, 弹出的消息框就没有任何响应的情况. 或者是关闭掉弹出的消息框, 对话框就没有任何响应的情形.case WM_NOTIFY_PARENT:Id = WM_GetId(pMsg-hWinSrc); /* Id of widget */NCode = pMsg-Data.v; /* Notification code */switch (NCode) {case WM_NOTIFICATION_RELEASED: /* React only if released */if (Id == GUI_ID_OK) { /* OK Button *//弹出消息框...GUI_MessageBox(This

文档评论(0)

yd327298 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档