这个工程真是庞大啊,只是编译就用了两分钟多。
在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文件中的界面初始化函数。
下面是显示效果。
对于那个海豚的界面,海豚游的很流畅。
|