首页 > 代码库 > [ucgui] 子窗口父窗口
[ucgui] 子窗口父窗口
它创建了3个窗口:
- 第一个作为桌面的子窗口
- 第二个作为第一个窗口的子窗口
- 第三个作为第二个窗口的子窗口
窗口创建后,使用WM_ForEachDesc()在其父窗口中移动各个窗口:
1 static void _cbWin(WM_MESSAGE * pMsg) { 2 GUI_COLOR Color; 3 switch (pMsg->MsgId) { 4 case WM_PAINT: 5 WM_GetUserData(pMsg->hWin, &Color, 4); 6 GUI_SetBkColor(Color); 7 GUI_Clear(); 8 break; 9 default:10 WM_DefaultProc(pMsg);11 }12 }13 /*********************************************************************14 *15 * _cbDoSomething16 */17 static void _cbDoSomething(WM_HWIN hWin, void * p) {18 int Value = http://www.mamicode.com/*(int *)p;19 WM_MoveWindow(hWin, Value, Value);20 }21 /*********************************************************************22 *23 * MainTask24 */25 void Fun(void) {26 WM_HWIN hWin_1, hWin_2, hWin_3;27 int Value = http://www.mamicode.com/10;28 GUI_COLOR aColor[] = {GUI_RED, GUI_GREEN, GUI_BLUE};29 GUI_Init();30 WM_SetDesktopColor(GUI_BLACK);31 hWin_1 = WM_CreateWindow( 10, 10, 100, 100, WM_CF_SHOW, _cbWin, 4);32 hWin_2 = WM_CreateWindowAsChild(10, 10, 80, 80, hWin_1, WM_CF_SHOW, _cbWin, 4);33 hWin_3 = WM_CreateWindowAsChild(10, 10, 60, 60, hWin_2, WM_CF_SHOW, _cbWin, 4);34 WM_SetUserData(hWin_1, &aColor[0], 4);35 WM_SetUserData(hWin_2, &aColor[1], 4);36 WM_SetUserData(hWin_3, &aColor[2], 4);37 while (1) {38 WM_ForEachDesc(WM_HBKWIN, _cbDoSomething, (void *)&Value);39 Value *= -1;40 GUI_Delay(500);41 }42 }
- 前两个为回调函数,Fun函数为主函数,建立3个窗口
- WM_HWIN WM_CreateWindow(int x0, int y0,
int width, int height,
U8 Style, WM_CALLBACK * cb
int NumExtraBytes); - WM_HWIN WM_CreateWindowAsChild(int x0, int y0,
int width, int height,
WM_HWIN hWinParent,
U8 Style,
WM_CALLBACK* cb
int NumExtraBytes); - void WM_ForEachDesc(WM_HWIN hWin, WM_tfForEach * pcb, void * pData);
[ucgui] 子窗口父窗口
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。