[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 * _cbDoSomething 16 */ 17 static void _cbDoSomething(WM_HWIN hWin, void * p) { 18 int Value = *(int *)p; 19 WM_MoveWindow(hWin, Value, Value); 20 } 21 /********************************************************************* 22 * 23 * MainTask 24 */ 25 void Fun(void) { 26 WM_HWIN hWin_1, hWin_2, hWin_3; 27 int Value = 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);
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?