42.2 官方WIDGET_Dropdown实例 官方的这个例子做的很好,充分的演示了下拉列表的大部分常用API。这个例子在模拟器中的位置:
源代码如下:
- #include "GUI.h"
- #include "FRAMEWIN.h"
- #include "DROPDOWN.h"
- #include "LISTBOX.h"
- #include
-
- /*********************************************************************
- *
- * Defines
- *
- **********************************************************************
- */
- #define SPEED 1000
-
- /*******************************************************************
- *
- * static code
- *
- ********************************************************************
- */
- /*******************************************************************
- *
- * _ShowSeveralFunctions
- */
- static void _ShowSeveralFunctions(DROPDOWN_Handle hDropDown) {
- int NumEntries;
- int i;
- int Key;
- int Cnt;
- char ac[] = "-- sec to play with dropdown control";
-
- Key = 0;
- Cnt = 15;
- //
- // Set focus
- //
- GUI_DispStringAtCEOL("WM_SetFocus", 5, 55);
- GUI_Delay(SPEED * 0.9);
- WM_SetFocus(hDropDown);
- GUI_Delay(SPEED * 0.7);
- //
- // Add strings
- //
- GUI_DispStringAtCEOL("DROPDOWN_AddString", 5, 55);
- GUI_Delay(SPEED * 0.8);
- DROPDOWN_AddString(hDropDown, "English"); (1)
- DROPDOWN_AddString(hDropDown, "Deutsch");
- DROPDOWN_AddString(hDropDown, "Fran鏰is");
- DROPDOWN_AddString(hDropDown, "Japanese");
- DROPDOWN_AddString(hDropDown, "Italiano");
- DROPDOWN_AddString(hDropDown, "Espa駉l");
- DROPDOWN_AddString(hDropDown, "Other language ...");
- GUI_Delay(SPEED * 0.6);
- //
- // Increment selection
- //
- GUI_DispStringAtCEOL("DROPDOWN_IncSel", 5, 55);
- GUI_Delay(SPEED);
- NumEntries = DROPDOWN_GetNumItems(hDropDown);(2)
- for (i = 0; i < (NumEntries - 2); i++) {
- DROPDOWN_IncSel(hDropDown);(3)
- GUI_Delay(SPEED / 6);
- }
- GUI_Delay(SPEED / 4);
- //
- // Expand dropdown
- //
- GUI_DispStringAtCEOL("DROPDOWN_Expand", 5, 55);
- GUI_Delay(SPEED);
- DROPDOWN_Expand(hDropDown);(4)
- GUI_Delay(SPEED * 0.75);
- //
- // Add scrollbar
- //
- GUI_DispStringAtCEOL("DROPDOWN_SetAutoScroll", 5, 55);
- GUI_Delay(SPEED);
- DROPDOWN_SetAutoScroll(hDropDown, 1); (5)
- GUI_Delay(SPEED * 0.75);
- //
- // Set font
- //
- GUI_DispStringAtCEOL("DROPDOWN_SetFont", 5, 55);
- GUI_Delay(SPEED);
- DROPDOWN_SetFont(hDropDown, &GUI_Font16B_1); (6)
- GUI_Delay(SPEED * 0.75);
- //
- // Set text color
- //
- GUI_DispStringAtCEOL("DROPDOWN_SetTextColor", 5, 55);
- GUI_Delay(SPEED);
- DROPDOWN_SetTextColor(hDropDown, 0, 0x00BB00);(7)
- DROPDOWN_SetTextColor(hDropDown, 2, GUI_BLACK);
- GUI_Delay(SPEED * 0.75);
- //
- // Set background color
- //
- GUI_DispStringAtCEOL("DROPDOWN_SetBkColor", 5, 55);
- GUI_Delay(SPEED);
- DROPDOWN_SetBkColor(hDropDown, 0, GUI_YELLOW); (8)
- DROPDOWN_SetBkColor(hDropDown, 2, GUI_RED);
- GUI_Delay(SPEED * 0.75);
- //
- // Delete item
- //
- GUI_DispStringAtCEOL("DROPDOWN_DeleteItem", 5, 55);
- GUI_Delay(SPEED);
- DROPDOWN_DeleteItem(hDropDown, 5);(9)
- GUI_Delay(SPEED * 0.75);
- //
- // Collapse dropdown
- //
- GUI_DispStringAtCEOL("DROPDOWN_Collapse", 5, 55);
- GUI_Delay(SPEED);
- DROPDOWN_Collapse(hDropDown);(10)
- GUI_Delay(SPEED * 0.75);
- //
- // Decrement selection
- //
- GUI_DispStringAtCEOL("DROPDOWN_DecSel", 5, 55);
- GUI_Delay(SPEED);
- NumEntries = DROPDOWN_GetNumItems(hDropDown);
- for (i = 0; i < (NumEntries - 2); i++) {
- DROPDOWN_DecSel(hDropDown);(11)
- GUI_Delay(SPEED / 6);
- }
- GUI_Delay(SPEED / 4);
- //
- // Let user play with dropdown control
- //
- GUI_DispStringAtCEOL("", 5, 55);(12)
- while (!Key && (Cnt > 0)) {
- ac[0] = '0' + (Cnt / 10);
- ac[1] = '0' + (Cnt-- % 10);
- GUI_DispStringAtCEOL(ac, 5, 40);
- GUI_Delay(1000);
- Key = GUI_GetKey();
- }
- //
- // Delete dropdown widget
- //
- GUI_DispStringAtCEOL("DROPDOWN_Delete", 5, 55);
- GUI_Delay(SPEED * 1.1);
- DROPDOWN_Delete(hDropDown);(14)
- GUI_Delay(SPEED * 0.75);
- }
-
- /*******************************************************************
- *
- * _DemoDropDown
- */
- static void _DemoDropDown(void) {
- WM_HWIN hDropDown;
-
- //
- // Display titel
- //
- GUI_SetBkColor(0xB00000);
- GUI_SetColor(0xFFFFFF);
- GUI_SetFont(&GUI_Font24_ASCII);
- GUI_DispStringHCenterAt("Dropdown - Sample", 160, 5);
- GUI_Delay(SPEED / 2);
- //
- // Create listbox
- //
- GUI_SetFont(&GUI_Font8x16);
- GUI_SetTextAlign(GUI_TA_LEFT);
- GUI_DispStringAtCEOL("using", 5, 40);
- GUI_DispStringAtCEOL("DROPDOWN_CreateEx", 5, 55);
- GUI_Delay(SPEED * 0.9);
- hDropDown = DROPDOWN_CreateEx(100, 80, 120, 115-50, WM_HBKWIN, WM_CF_SHOW, 0, 0); (15)
- GUI_Delay(SPEED * 0.75);
- //
- // Show serveral functions of listbox
- //
- _ShowSeveralFunctions(hDropDown);
- //
- // Clear display
- //
- GUI_Clear();
- GUI_Delay(SPEED * 1.5);
- }
-
- /*******************************************************************
- *
- * _DemoDropDownAsChild
- */
- static void _DemoDropDownAsChild(void) {
- WM_HWIN hFrame;
- WM_HWIN hDropDown;
-
- //
- // Display titel
- //
- GUI_SetBkColor(0xB00000);
- GUI_SetColor(0xFFFFFF);
- GUI_SetFont(&GUI_Font24_ASCII);
- GUI_DispStringHCenterAt("Dropdown as child - Sample", 160, 5);
- GUI_Delay(SPEED / 2);
- //
- // Create framewin
- //
- GUI_SetFont(&GUI_Font8x16);
- GUI_SetTextAlign(GUI_TA_LEFT);
- GUI_DispStringAtCEOL("using", 5, 40);
- GUI_DispStringAtCEOL("FRAMEWIN_Create", 5, 55);
- GUI_Delay(SPEED);
- hFrame = FRAMEWIN_Create("DropDown", NULL, WM_CF_SHOW, 80, 80, 160, 140);(16)
- FRAMEWIN_SetFont(hFrame, &GUI_Font16B_ASCII);
- FRAMEWIN_SetActive(hFrame, 1);
- GUI_Delay(SPEED * 0.75);
- //
- // Create listbox
- //
- GUI_DispStringAtCEOL("DROPDOWN_CreateEx", 5, 55);
- GUI_Delay(SPEED);
- hDropDown = DROPDOWN_CreateEx(20, 20, 120, 65, WM_GetClientWindow(hFrame), WM_CF_SHOW, 0, 0);(17)
- GUI_Delay(SPEED * 0.75);
- //
- // Show serveral functions of listbox
- //
- _ShowSeveralFunctions(hDropDown);
- //
- // Delete framewin widget
- //
- GUI_DispStringAtCEOL("FRAMEWIN_Delete", 5, 55);
- GUI_Delay(SPEED);
- FRAMEWIN_Delete(hFrame);
- GUI_Delay(SPEED * 0.75);
- //
- // Clear display
- //
- GUI_Clear();
- GUI_Delay(SPEED * 1.5);
- }
-
- /*********************************************************************
- *
- * Public code
- *
- **********************************************************************
- */
- /*********************************************************************
- *
- * MainTask
- */
- void MainTask(void) {
- GUI_Init();
- WM_SetDesktopColor(0xB00000);
- GUI_Exec();
- while(1) {
- _DemoDropDown();
- _DemoDropDownAsChild();
- }
- }
复制代码
1. 函数DROPDOWN_AddString用于给下拉列表添加新元素。 2. 函数DROPDOWN_GetNumItems用于返回下拉列表中元素的数目。 3. 函数DROPDOWN_IncSel用于增加选定范围。 4. 函数DROPDOWN_Expand用于打开下拉列表。 5. 函数DROPDOWN_SetAutoScroll启用在下拉列表中自动使用滚动条 6. 函数DROPDOWN_SetFont设置给定DROPDOWN控件的字体。 7. 函数DROPDOWN_SetTextColor用于设置给定DROPDOWN控件的文本颜色。 8. 函数DROPDOWN_SetBkColor用于设置背景颜色。 9. 函数DROPROWN_DeleteItem用于删除下拉列表。 10. 函数DROPDOWN_Collapse用于关闭下拉列表。 11. 函数DROPDOWN_DecSel用于减小选定操作。 12. 用于用户操作。 13. 函数DROPDOWN_Delete用于删除下拉列表。 14. 在桌面窗口上创建下拉列表。 15. 创建框架窗口。 16. 在框架窗口上面创建下拉列表。 在桌面窗口上面创建下拉列表时的显示效果如下: |