完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
转stemwin教程
本期教程讲解STemWin支持的滚动条控件。 54. 1滚动条控件介绍 54. 2 官方DIALOG_Scrollbar实例 54. 3 使用官方GUIBulder建立单选按钮控件 54. 4 总结 54.1 滚动条控件介绍 滚动条用于滚动列表框或任何其他类型的窗口。它们可以水平 (如下所示)或垂直创建。 通常,滚动条将附加到现有窗口,例如下图所示的列表框: 设置皮肤后显示效果如下: |
|
相关推荐
|
|
54.1.1 滚动条支持的通知代码
以下事件是滚动条作为WM_NOTIFY_PARENT消息的一部分发送给其父窗口的:
|
|
|
|
|
|
54.1.2 滚动条支持的键盘反应
如果控件具有输入焦点,则它将对下列各键做出反应:
|
|
|
|
|
|
54.2 官方WIDGET_Scrollbar实例
官方的这个实例很好的演示了scrollbar的使用,这个例子在模拟器中的位置: |
|
|
|
|
|
源码如下(程序中进行了详细的注释):
复制代码 #include "GUI.h" #include "SCROLLBAR.h" #include "EDIT.h" #include /******************************************************************* * * defines * ******************************************************************** */ /* 制作行3列的方框*/ #define EDIT_MAX_X 10 #define EDIT_MAX_Y 3 /******************************************************************* * * static variables * ******************************************************************** */ static EDIT_Handle _aahEdit[EDIT_MAX_Y][EDIT_MAX_X]; static int _x,_y; /* 注意默认是初始化为的要不就不对了*/ /******************************************************************* * * _cbWindow * 桌面窗口的回调函数,当接受到滚动条的WM_NOTIFICATION_VALUE_CHANGED消息时,移动所有的编辑框 * */ static void _cbWindow(WM_MESSAGE *pMsg) { /*结构体WM_SCROLL_STATE的定义如下: typedef struct { int NumItems; int v; int PageSize; } WM_SCROLL_STATE; */ WM_SCROLL_STATE ScrollState; switch (pMsg->MsgId) { case WM_NOTIFY_PARENT: /* 接受到的是WM_NOTIFICATION_VALUE_CHANGED消息*/ if (pMsg->Data.v == WM_NOTIFICATION_VALUE_CHANGED) { /* 消息时来自水平的滚动条*/ if (WM_GetId(pMsg->hWinSrc) == GUI_ID_HSCROLL) { WM_GetScrollState(pMsg->hWinSrc, &ScrollState); /* 根据当前滚动条的位置,移动编辑框*/ if (_x != ScrollState.v) { int x, y; for (y = 0; y < EDIT_MAX_Y; y++) { for (x = 0; x < EDIT_MAX_X; x++) { WM_MoveWindow(_aahEdit[y][x], _x - ScrollState.v, 0); } } _x = ScrollState.v; } } } break; case WM_PAINT: GUI_SetBkColor(GUI_RED); GUI_Clear(); break; default: WM_DefaultProc(pMsg); } } /******************************************************************* * * _DemoScrollbarMove */ static void _DemoScrollbarMove(void) { int x, y; WM_HWIN hWindow; SCROLLBAR_Handle hScroll; /*基本设置*/ GUI_SetBkColor(GUI_BLUE); GUI_Clear(); GUI_SetColor(GUI_WHITE); GUI_SetFont(&GUI_Font24_ASCII); GUI_SetTextAlign(GUI_TA_HCENTER); GUI_DispStringAt("SCROLLBAR_Move - Sample", 160, 5); GUI_SetTextAlign(GUI_TA_LEFT); GUI_SetColor(0xFFFFFF); GUI_SetFont(&GUI_Font8x16); /* 创建窗口*/ hWindow = WM_CreateWindow(50, 90, 220, 79, WM_CF_SHOW, &_cbWindow, 0); /* 创建窗口的子控件*/ hScroll = SCROLLBAR_CreateAttached(hWindow, 0); /* 设置滚动条条目的数量*/ SCROLLBAR_SetNumItems(hScroll, 48 * EDIT_MAX_X); /* 设置页尺寸 页面大小被指定为一页的项目数。如果用户使用键盘或通过在滚动条区域点击鼠 标向上或向下翻页,则窗口按照为一页指定的项目数向上或向下滚动。 */ SCROLLBAR_SetPageSize(hScroll, 220); /* 创建编辑区域*/ for (y = 0; y < EDIT_MAX_Y; y++) { for (x = 0; x < EDIT_MAX_X; x++) { /* 创建编辑框*/ _aahEdit[y][x] = EDIT_CreateAsChild(x * 48, y * 22, 48, 22, hWindow, 13, WM_CF_SHOW, 5); /* 设置对齐方式和字体*/ EDIT_SetTextAlign(_aahEdit[y][x], GUI_TA_RIGHT | GUI_TA_VCENTER); EDIT_SetFont(_aahEdit[y][x], &GUI_Font8x16); /* 启用编辑区的十进制编辑模式给出的数值可以在给定的范围内显示*/ EDIT_SetDecMode(_aahEdit[y][x], ((y * EDIT_MAX_X) + x) * 100, -99999, +99999, 2, 0); } } while (1) { GUI_Exec(); GUI_Delay(20); } /* delete window and clear display */ WM_DeleteWindow(hWindow); GUI_Clear(); } /******************************************************************* * * MainTask * * Demonstates the use of a scrollbar as child of a window * ******************************************************************** */ void MainTask(void) { GUI_Init(); while(1) { _DemoScrollbarMove(); } } |
|
|
|
|
|
54.3 使用官方GUIBulder建立单选按钮控件
这里用GUIBulder5.22建立一个如下的界面(分辨率480*272): |
|
|
|
|
|
其它的两个水平和垂直滚动条直接添加即可,添加的时候默认是水平的滚动条,垂直的滚动条需要通过将水平滚动条按照如下方法进行设置(鼠标左键点击滚动条选中后,右击鼠标进行选择):
|
|
|
|
|
|
54.4 总结
本期教程主要是跟大家讲解了滚动条控件的基础知识。希望大家可以把本期教程中讲的这两个例子跑跑,然后自己设计一个相关的例子进行试验学习。教程中只是使用了部分的滚动条控件API,其它的API大家都可以试试。 |
|
|
|
|
|
《DNESP32S3使用指南-IDF版_V1.6》 第十六章 WATCH_DOG实验
460 浏览 0 评论
【敏矽微ME32G070开发板免费体验】+ADC测试与LED点亮
418 浏览 0 评论
飞凌嵌入式-ELFBOARD ELF 2的硬件知识分享--核心板
352 浏览 0 评论
【敏矽微ME32G070开发板免费体验】\\+Lora通信终端产品开发项目
514 浏览 0 评论
1576 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
11970 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-18 18:40 , Processed in 1.076351 second(s), Total 89, Slave 72 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号