一种基于嵌入式系统图形库的管理弹出窗口的方法

文档序号:6336084阅读:239来源:国知局
专利名称:一种基于嵌入式系统图形库的管理弹出窗口的方法
技术领域
本发明涉及嵌入式系统领域,尤其涉及一种基于嵌入式系统图形库的管理弹出窗口的方法。
背景技术
弹出式窗口是个常见的GUI窗口,应用十分广泛,如常见的对话框就是一种弹出式窗口。无论在PC机还是在嵌入式设备的图形界面上,随处可以看到弹出式窗口,给用户显示提示信息、警告信息、与用户进行信息交互等。但一般的弹出式窗口是在已知父窗口的情况下的弹出窗口,或者系统在某一时亥IJ,只会触发一个弹出窗口,不会出现当存在已有弹出窗口,还响应新的突发事件而弹出窗口的情况。在特定的嵌入式GUI应用程序中,就存在可能有多个事件触发弹出窗口。如当用户正在操作,触发出一个弹出窗口,而此时系统自动触发事件或者远程网络事件,要求弹出新的弹出窗口,这时候需要在系统中对弹出窗口进行统一管理。当有多个事件同时触发弹出窗口时,会出现窗口焦点错误、或者焦点丢失而导致按键不能正确响应或者根本不响应的情况。因此,如何解决现有技术中多个弹窗而导致按键不能正确响应或者根本不响应的问题,已成为当前急需解决的技术问题之一。

发明内容
本发明的目的是提供一种基于嵌入式系统图形库的管理弹出窗口的方法,其能防止因弹出多个窗口而导致窗口焦点传递错误、焦点丢失而导致按键错误反应或者无反应的问题。为解决本发明的技术问题,本发明公开一种基于嵌入式系统图形库的管理弹出窗口的方法,其特征在于,当系统中需要弹出一个新窗口的时候,先判断系统中是否已经有弹出窗口存在,如果系统中已经有弹出窗口存在,则先自动注销并销毁原来的弹出窗口,并使其失去焦点;然后再创建新的弹出窗口,获取焦点并响应按键消息事件。与现有技术相比,本发明的弹出窗口管理方法,可以防止因弹出多个窗口而导致窗口焦点传递错误、焦点丢失而导致按键错误反应或者无反应等问题,保证系统中最后一个触发的弹出窗口为活动窗口,保证系统焦点的正确传递、按键的正确反应。


图1是本发明基于嵌入式系统图形库的管理弹出窗口方法的流程图。。
具体实施例方式作为本发明的一个实施方式,本发明在CC1203和MSTAR 6 78硬件平台、基于Linux系统、基于支持帧缓存(FrameBuffer)的嵌入式⑶I图形库实现。嵌入式系统进入窗口主界面或者任意一普通窗口界面,这些普通界面有可能有用户操作弹出的窗口,也有网络、系统事件引发的任意弹出窗口。正是这些不确定、且可以出现在任意普通窗口的弹出窗口,如果不采用统一的管理方式,很容易引起窗口焦点传递错误、焦点丢失而导致系统错误相应事件消息或者根本不响应消息,造成系统假死现象。为了管理这些任意弹出的窗口和保证焦点正确传递,需要在系统定义两个全局变量;第一全局变量 CWindow*g_pParentWin 和第二全局变量 CWindow*g_pActivePopWin; 第一全局变量CWindow* g_pParentffin用来保存当前活动的普通窗口的指针,使用 RegisterParentffin (Cffin^pffin)函数就是给该变量赋值;第二全局变量CWindow*g_ pActivePopffin用来保存系统当前活动的弹出窗口指针,RegisterActivePopffin (Cffin^pffin)函数就是给该变量赋值。当系统中需要弹出一个新窗口的时候,先判断系统中是否已经有弹出窗口存在, 如果有,则先自动注销并销毁原来的弹出窗口,并使其失去焦点,然后再创建新的弹出窗口,获取焦点并响应按键消息事件。请参阅图1,系统对弹窗进行管理的方法步骤如下
步骤Sl 系统启动,进入主窗口界面,调用RegisterParentWin (CWin*pWin)函数注册该窗口为系统父窗口,调用WM_PUSH()函数将主界面压入窗口管理栈;
步骤S2 进入新的普通窗口界面,调用RegisterParentWin (Cffin^pffin)函数注册该窗口为系统父窗口,调用WM_PUSH()将该窗口压入窗口管理栈;
步骤S3 判断该普通窗口上是否有用户操作产生的创建弹出窗口,如果没有用户操作产生的创建新的弹出窗口,进入步骤S4;如果有用户操作产生的创建新的弹出窗口,则进入步骤S5 ;
步骤S4 判断是否有触发新弹出窗口的事件发生,如果没有触发新弹出窗口的事件发生,则返回步骤S3 ;如果有触发新弹出窗口的事件发生,则进入步骤S5 ;
步骤S5 调用RegisterActivePopWin (CWin*pWin)函数,注册该新的窗口为系统活动弹出窗口 ;创建并显示该活动的弹出窗口并获取焦点;然后进入步骤S6 ;
步骤S6 判断是否有触发新弹出窗口的事件发生,如果没有触发新弹出窗口的事件发生,则返回步骤S3 ;如果有触发新弹出窗口的事件发生,则进入步骤S7 ;
步骤S7 先调用Vgm_UnRegisterActivePopWin ()函数,注销先前的激活弹出窗口,并隐藏或者销毁该活动的弹出窗口 ;然后调用RegisterActivePopWin (CWin*pWin)函数注册该新的事件弹出窗口为系统活动弹出窗口 ;创建并显示该活动的弹出窗口并获取焦点;然后返回到步骤S3。如此循环操作,系统一直对是否有新的弹出窗口进行判断,当有新的窗口需要弹出时,注销掉原来的活动窗口,而将新的弹出窗口作为系统的活动弹出窗口。在步骤S5和步骤S7中,创建该弹出窗口成功后,需要调用RegisterActivePopWin (pffin)函数进行注册处理。所有的创建新的弹出窗口函数,必须返回新创建的弹出窗口指针,所有创建的弹出窗口都不会进入系统的窗口栈中,而是使用全局变量g_pActiveP0pWin 进行统一处理。普通的窗口指针必须进入系统的窗口栈中进行统一管理。综上所述,按照本发明的弹出窗口的实现和管理方式,就可以防止因弹出多个窗口而导致窗口焦点传递错误、焦点丢失而导致按键错误反应或者无反应等问题,保证系统中最后一个触发的弹出窗口为活动窗口,保证系统焦点的正确传递、按键的正确反应。
权利要求
1.一种基于嵌入式系统图形库的管理弹出窗口的方法,其特征在于,当系统中需要弹出一个新窗口的时候,先判断系统中是否已经有弹出窗口存在,如果系统中已经有弹出窗口存在,则先自动注销并销毁原来的弹出窗口,并使其失去焦点;然后再创建新的弹出窗口,获取焦点并响应按键消息事件。
2.根据权利要求1所述的基于嵌入式系统图形库的管理弹出窗口的方法,其特征在于,如果系统中没有弹出窗口存在,则直接注册该新窗口为系统活动弹出窗口,创建并显示该活动弹出窗口并获取焦点。
3.根据权利要求1所述的基于嵌入式系统图形库的管理弹出窗口的方法,其具体步骤包括步骤Sl 系统启动,进入主窗口界面;步骤S2 进入新的进入普通窗口界面的步骤;步骤S3 判断该普通窗口上是否有用户操作产生的创建弹出窗口,如果没有用户操作产生的创建新的弹出窗口,进入步骤S4;如果有用户操作产生的创建新的弹出窗口,则进入步骤S5 ;步骤S4 判断是否有触发新弹出窗口的事件发生,如果没有触发新弹出窗口的事件发生,则返回步骤S3 ;如果有触发新弹出窗口的事件发生,则进入步骤S5 ;步骤S5 注册该新的窗口为系统活动弹出窗口,创建并显示该活动的弹出窗口并获取焦点,然后进入步骤S6 ;步骤S6 判断是否有触发新弹出窗口的事件发生,如果没有触发新弹出窗口的事件发生,则返回步骤S3 ;如果有触发新弹出窗口的事件发生,则进入步骤S7 ;步骤S7:注销先前的激活弹出窗口,并隐藏或者销毁该活动的弹出窗口 ;然后注册该新的事件弹出窗口为系统活动弹出窗口,创建并显示该活动的弹出窗口并获取焦点,然后返回到步骤S3。
全文摘要
本发明公开一种基于嵌入式系统图形库的管理弹出窗口的方法,当系统中需要弹出一个新窗口的时候,先判断系统中是否已经有弹出窗口存在,如果系统中已经有弹出窗口存在,则先自动注销并销毁原来的弹出窗口,并使其失去焦点;然后再创建新的弹出窗口,获取焦点并响应按键消息事件。本发明的弹出窗口管理方法可防止因弹出多个窗口而导致窗口焦点传递错误、焦点丢失而导致按键错误反应或者无反应的问题。
文档编号G06F3/048GK102467328SQ20101054772
公开日2012年5月23日 申请日期2010年11月17日 优先权日2010年11月17日
发明者南习清 申请人:康佳集团股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1