首页IT科技uc浏览器窗口切换(ucGUI的视窗管理回调机制学习)

uc浏览器窗口切换(ucGUI的视窗管理回调机制学习)

时间2025-06-20 19:38:32分类IT科技浏览4848
导读:static voidcbBackgroundWin(WM_MESSAGE* pMsg ...

static voidcbBackgroundWin(WM_MESSAGE* pMsg) { switch(pMsg->MsgId) { caseWM_PAINT: GUI_Clear(); default: WM_DefaultProc(pMsg); } }

/* 前景窗的回调函数 */

static voidcbForegroundWin(WM_MESSAGE* pMsg) { switch(pMsg->MsgId) { caseWM_PAINT: GUI_SetBkColor(GUI_GREEN); GUI_Clear(); GUI_DispString("Foregroundwindow"); default: WM_DefaultProc(pMsg); } } /* 回调机制 */ static voidDemoRedraw(void) { GUI_HWIN hWnd; while(1) { /*创建一个前景窗 */ hWnd =WM_CreateWindow(10, 10, 100, 100, WM_CF_SHOW, cbForegroundWin, 0); /*显示前景窗*/ GUI_Delay(1000); /* 删除前景窗 */ WM_DeleteWindow(hWnd); GUI_DispStringAt("Backgroundof window has not been redrawn", 10, 10); /* 等待              ,显示并不重绘 */ GUI_Delay(1000); GUI_Clear(); /* 配置背景窗的回调功能 */ WM_SetCallback(WM_HBKWIN,cbBackgroundWin); /*创建一个前景窗 */ hWnd =WM_CreateWindow(10, 10, 100, 100,WM_CF_SHOW, cbForegroundWin, 0); /* 显示前景窗*/ GUI_Delay(1000); /*删除前景窗 */ WM_DeleteWindow(hWnd); /* 等待                      ,显示将重绘*/ GUI_Delay(1000); /* 删除回调函数 */ WM_SetCallback(WM_HBKWIN,0); } } voidmain(void) { GUI_Init(); DemoRedraw(); } static voidcbBackgroundWin(WM_MESSAGE* pMsg) { switch(pMsg->MsgId) { caseWM_PAINT: GUI_Clear(); default: WM_DefaultProc(pMsg); } }

/* 前景窗的回调函数 */

static voidcbForegroundWin(WM_MESSAGE* pMsg) { switch(pMsg->MsgId) { caseWM_PAINT: GUI_SetBkColor(GUI_GREEN); GUI_Clear(); GUI_DispString("Foregroundwindow"); default: WM_DefaultProc(pMsg); } } /* 回调机制 */ static voidDemoRedraw(void) { GUI_HWIN hWnd; while(1) { /*创建一个前景窗 */ hWnd =WM_CreateWindow(10, 10, 100, 100, WM_CF_SHOW, cbForegroundWin, 0); /*显示前景窗*/ GUI_Delay(1000); /* 删除前景窗 */ WM_DeleteWindow(hWnd); GUI_DispStringAt("Backgroundof window has not been redrawn", 10, 10); /* 等待      ,显示并不重绘 */ GUI_Delay(1000); GUI_Clear(); /* 配置背景窗的回调功能 */ WM_SetCallback(WM_HBKWIN,cbBackgroundWin); /*创建一个前景窗 */ hWnd =WM_CreateWindow(10, 10, 100, 100,WM_CF_SHOW, cbForegroundWin, 0); /* 显示前景窗*/ GUI_Delay(1000); /*删除前景窗 */ WM_DeleteWindow(hWnd); /* 等待          ,显示将重绘*/ GUI_Delay(1000); /* 删除回调函数 */ WM_SetCallback(WM_HBKWIN,0); } } voidmain(void) { GUI_Init(); DemoRedraw(); }

程式清单4.2中                       ,回调函数执行的功能依赖于所接收到的消息              。Switch语句中根据消息的类型         ,分别执行不同的功能                    。

WM_MESSAGE的成员如下:

MsgId:消息类型

HWin:目的窗口

HWinSrc: 源窗口

Data.p : 数据指针

Data.v: 数据值

其中MsgId的类型如下:

WM_PAINT: 窗口重绘

WM_CREATE: 窗口一建立就发送

WM_DELETE: 窗口一删除就发送

WM_SIZE :窗口尺寸发生改变就发送

WM_MOVE :窗口移动就发送

WM_SHOW :接收到show命令就发送

WM_HIDE :接收到hide命令就发送

WM_TOUCH:触摸屏信息

应用程式还能够为自己定义额外的消息        。为确保他们不用到uC/GUI的消息ID      ,用户定义的消息从WM_USER后面开始                       ,如:

#defineMY_MESSAGE_AAA WM_USER +0

#defineMY_MESSAGE_BBB WM_USER +

创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!

展开全文READ MORE
remove删除元素(DOM:元素的增删改查发、克隆)