这个工程真是庞大啊,只是编译就用了两分钟多。
在Application/Demo中,每一个c文件对应了一个界面。几乎是把GUI中涉及到的控件全都有了。在使用的时候这是一个不错的参考。
其中main.c中的main函数只是对外设进行了必要的初始化。真正的main函数在GUIDEMO.c中的static void _Main(void)。
- static void _Main(void) {
- int xSize;
- int ySize;
- WM_SelectWindow(WM_HBKWIN);
- GUI_Clear();
- #if (GUI_SUPPORT_CURSOR | GUI_SUPPORT_TOUCH)
- // GUI_CURSOR_Show();
- #endif
- //
- // Create and configure Control and Information window
- //
- xSize = LCD_GetXSize();
- ySize = LCD_GetYSize();
- _hDialogControl = GUI_CreateDialogBox(_aFrameWinControl, GUI_COUNTOF(_aFrameWinControl), &_cbFrameWinControl, WM_HBKWIN, xSize - CONTROL_SIZE_X, ySize - CONTROL_SIZE_Y);
- _hDialogInfo = GUI_CreateDialogBox(_aFrameWinInfo, GUI_COUNTOF(_aFrameWinInfo), &_cbFrameWinInfo, WM_HBKWIN, (xSize >> 1) - 1, 0);
- WM_HideWindow(_hDialogInfo);
- //
- // Show Intro
- //
- WM_InvalidateWindow(_hDialogControl);
- WM_DisableMemdev(WM_HBKWIN);
- GUI_Exec();
- WM_EnableMemdev(WM_HBKWIN);
-
- GUI_SetBkColor(GUI_RED);
- GUI_Clear();
- GUI_SetBkColor(GUI_GREEN);
- GUI_Clear();
- GUI_SetBkColor(GUI_BLUE);
- GUI_Clear();
-
- GUIDEMO_Intro();
- //
- // Run the demos
- //
- for (_iDemo = 0; _GUIDemoConfig.apFunc[_iDemo]; _iDemo++) {
- _ClearHalt();
- GUIDEMO_UpdateControlText();
- (*_GUIDemoConfig.apFunc[_iDemo])();
- _iDemoMinor = 0;
- _Pressed = 0;
-
-
- }
- _iDemo = 0;
- //
- // Cleanup
- //
- WM_DeleteWindow(_hDialogControl);
- WM_DeleteWindow(_hDialogInfo);
- #if (GUI_SUPPORT_CURSOR | GUI_SUPPORT_TOUCH)
- GUI_CURSOR_Hide();
- #endif
- }
每一屏的循环显示是在for循环中。
每一个*_GUIDemoConfig.apFunc对就了一具C文件中的界面初始化函数。
下面是显示效果。
对于那个海豚的界面,海豚游的很流畅。
|