Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
RT-Thread一般讨论
用例表视图调用另一个视图也没有成功!求助
发布于 2011-09-04 22:57:27 浏览:5474
订阅该版
搞了N星期用例表视图调用另一个视图也没有成功! 现有两个视图我用左右键切换是好用的,可用上下键选择后按回车键调另一个视图不成功。有高人帮我写下device_view_create这个函数吗?不盛感激!!! #include
#include
#include
#include
#include
#include
static struct rtgui_view* view; static struct rtgui_view* device_view; static struct rtgui_view* home_view; static struct rtgui_list_view* function_view; static struct rtgui_workbench* workbench; static void workbench_info_ui(void* parameter) { rt_mq_t mq; /* 创建GUI应用需要的消息队列 */ mq = rt_mq_create("wmq1", 256, 4, RT_IPC_FLAG_FIFO); /* 注册当前线程为GUI线程 */ rtgui_thread_register(rt_thread_self(), mq); /* 创建一个工作台 */ workbench = rtgui_workbench_create("info", "workbench #1"); if(workbench == RT_NULL) return; /* 创建一个视图 */ view = rtgui_view_create("view1"); if(view == RT_NULL) return; /* 指定视图的背景色 */ RTGUI_WIDGET_BACKGROUND(RTGUI_WIDGET(view)) = light_grey; /* 在工作台上添加一个视图 */ rtgui_workbench_add_view(workbench, view); /* 非模式方式显示视图 */ rtgui_view_show(view, RT_FALSE); /* 执行工作台事件循环 */ rtgui_workbench_event_loop(workbench); /* 去注册GUI线程 */ rtgui_thread_deregister(rt_thread_self()); /* delete message queue */ rt_mq_delete(mq); } static struct rtgui_view* device_view = RT_NULL; rtgui_view_t* device_view_create(rtgui_workbench_t* workbench) { /* create a view */ device_view = rtgui_view_create("Device Info"); /* this view can be focused */ RTGUI_WIDGET(device_view)->flag |= RTGUI_WIDGET_FLAG_FOCUSABLE; rtgui_widget_focus(RTGUI_WIDGET(device_view)); /* add view to workbench */ rtgui_workbench_add_view(workbench, device_view); rtgui_view_show(device_view, RT_FALSE); } void function_action(void* parameter) { return; } static struct rtgui_list_item function_list[] = { {"例1", RT_NULL, function_action, RT_NULL}, {"例2", RT_NULL, function_action, RT_NULL}, {"例3", RT_NULL, device_view_create, RT_NULL}, {"例4", RT_NULL, function_action, RT_NULL}, {"例5", RT_NULL, function_action, RT_NULL}, {"例6", RT_NULL, function_action, RT_NULL}, }; static rt_bool_t home_view_event_handler(struct rtgui_widget* widget, struct rtgui_event* event) { if (event->type == RTGUI_EVENT_KBD) { struct rtgui_event_kbd* ekbd = (struct rtgui_event_kbd*)event; if (ekbd->type == RTGUI_KEYDOWN) { if (ekbd->key == RTGUIK_LEFT) { rtgui_view_show(RTGUI_VIEW(function_view), RT_FALSE); } } return RT_FALSE; } return rtgui_view_event_handler(widget, event); } rt_bool_t player_workbench_event_handler(rtgui_widget_t *widget, rtgui_event_t *event) { if (event->type == RTGUI_EVENT_KBD) { struct rtgui_event_kbd* ekbd = (struct rtgui_event_kbd*)event; if ((ekbd->type == RTGUI_KEYDOWN) && (ekbd->key == RTGUIK_RIGHT)) { /* active home view */ if (workbench->current_view != home_view) { rtgui_view_show(home_view, RT_FALSE); return RT_TRUE; } } } return rtgui_workbench_event_handler(widget, event); } static void workbench_main_ui(void* parameter) { rt_mq_t mq; rtgui_rect_t rect; mq = rt_mq_create("ply_ui", 256, 4, RT_IPC_FLAG_FIFO); rtgui_thread_register(rt_thread_self(), mq); workbench = rtgui_workbench_create("main", "workbench"); if (workbench == RT_NULL) return; rtgui_widget_set_event_handler(RTGUI_WIDGET(workbench), player_workbench_event_handler); /* add home view */ home_view = rtgui_view_create("Home"); rtgui_widget_set_event_handler(RTGUI_WIDGET(home_view), home_view_event_handler); rtgui_workbench_add_view(workbench, home_view); /* this view can be focused */ RTGUI_WIDGET(home_view)->flag |= RTGUI_WIDGET_FLAG_FOCUSABLE; /* set widget focus */ rtgui_widget_focus(RTGUI_WIDGET(home_view)); rtgui_view_show(home_view, RT_FALSE); /* add function view */ rtgui_widget_get_rect(RTGUI_WIDGET(workbench), &rect); function_view = rtgui_list_view_create(function_list, 6, &rect, RTGUI_LIST_VIEW_LIST); rtgui_workbench_add_view(workbench, RTGUI_VIEW(function_view)); rtgui_workbench_event_loop(workbench); rtgui_thread_deregister(rt_thread_self()); rt_mq_delete(mq); } /* 初始化两个workbench */ void workbench_init(void) { rt_thread_t info_tid, main_tid; info_tid = rt_thread_create("wb1", workbench_info_ui, RT_NULL, 1024, 20, 5); if(info_tid != RT_NULL) rt_thread_startup(info_tid); main_tid = rt_thread_create("wb2", workbench_main_ui, RT_NULL, 1024, 20, 5); if(main_tid != RT_NULL) rt_thread_startup(main_tid); } /*@}*/
查看更多
7
个回答
默认排序
按发布时间排序
bernard
2011-09-05
这家伙很懒,什么也没写!
键盘事件传递的过程你理解了吗?
nukes
2011-09-05
这家伙很懒,什么也没写!
键盘基本理解了!就是把键值通过消息队列发送出去。我左右上下都好用,所以回车也应没问题。我反复看例程没看到视图列表有特别的,可是我的列表视图调用下一级就是不好用。可以帮我写下device_view_create函数吗?我用STM32—3.5库,MDK4.2,RTT3.2
shaolin
2011-09-06
这家伙很懒,什么也没写!
可能是你发送的回车键值不对,你可以在按回车键时看下发送的键值是否是RTGUIK_RETURN,只有它才能触发相应的事件。
nukes
2011-09-06
这家伙很懒,什么也没写!
晕死啊!重没有想过用RETURN。万分感谢少林兄弟。 那么另一个问题想问?为何是RETURN不是ENTER呢??我返回上一级列表用什么啊, 难道不是回车进入返回退出!?
shaolin
2011-09-07
这家伙很懒,什么也没写!
>晕死啊!重没有想过用RETURN。万分感谢少林兄弟。 >那么另一个问题想问?为何是RETURN不是ENTER呢??我返回上一级列表用什么啊, >难道不是回车进入返回退出!? --- 这些键值都是可以在键值配置表中配置的,关键是需要和RTGUI中相应控件的键值匹配上。可以从源码中看出来。
bernard
2011-09-07
这家伙很懒,什么也没写!
>晕死啊!重没有想过用RETURN。万分感谢少林兄弟。 >那么另一个问题想问?为何是RETURN不是ENTER呢??我返回上一级列表用什么啊, >难道不是回车进入返回退出!? --- 所以有问题就问,憋在自己那边可能憋得一塌糊涂。有问题发上来,可能兄弟们就立刻给你提供些思路。另外,建议有问题放在官网或邮件列表上问,特别是邮件列表,邮件列表上开发人员基本都会接收邮件。我们也在考虑建立一个邮件列表到论坛的转换,这样也就更方便了。 RETURN还是ENTER,这个有些不记得了,有些历史原因吧,看看下一版本能否把它们合并起来。返回上一级列表,这个需要你的代码自己处理,列表控件处理不了(因为要设计到更换列表项)
撰写答案
登录
注册新账号
关注者
0
被浏览
5.5k
关于作者
nukes
这家伙很懒,什么也没写!
提问
8
回答
12
被采纳
0
关注TA
发私信
相关问题
1
有关动态模块加载的一篇论文
2
最近的调程序总结
3
晕掉了,这么久都不见layer2的踪影啊
4
继续K9ii的历程
5
[GUI相关] FreeType 2
6
[GUI相关]嵌入式系统中文输入法的设计
7
20081101 RT-Thread开发者聚会总结
8
嵌入式系统基础
9
linux2.4.19在at91rm9200 上的寄存器设置
10
[转]基于嵌入式Linux的通用触摸屏校准程序
推荐文章
1
RT-Thread应用项目汇总
2
玩转RT-Thread系列教程
3
国产MCU移植系列教程汇总,欢迎查看!
4
机器人操作系统 (ROS2) 和 RT-Thread 通信
5
五分钟玩转RT-Thread新社区
6
【技术三千问】之《玩转ART-Pi》,看这篇就够了!干货汇总
7
关于STM32H7开发板上使用SDIO接口驱动SD卡挂载文件系统的问题总结
8
STM32的“GPU”——DMA2D实例详解
9
RT-Thread隐藏的宝藏之completion
10
【ART-PI】RT-Thread 开启RTC 与 Alarm组件
最新文章
1
RT-thred的stm32h723对应bsp包CubeMX添加其他外设报错
2
RT-Thread中的time溢出问题,时间戳溢出,解决方法
3
ART-PI使用env驱动ETH网卡,pc和板子可以ping通
4
SystemView线程名字不显示
5
只用网页也能跑RT-Smart 无门槛腾讯Cloud studio + smart-build快速构建
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
AT
Bootloader
Hardfault
CAN总线
FinSH
ART-Pi
DMA
USB
文件系统
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
RTC
rt-smart
FAL
I2C_IIC
UART
ESP8266
cubemx
WIZnet_W5500
ota在线升级
PWM
BSP
flash
freemodbus
packages_软件包
潘多拉开发板_Pandora
定时器
ADC
GD32
flashDB
socket
编译报错
中断
Debug
rt_mq_消息队列_msg_queue
keil_MDK
ulog
SFUD
msh
C++_cpp
MicroPython
本月问答贡献
RTT_逍遥
9
个答案
2
次被采纳
三世执戟
8
个答案
1
次被采纳
KunYi
8
个答案
1
次被采纳
winfeng
2
个答案
1
次被采纳
YZRD
2
个答案
1
次被采纳
本月文章贡献
catcatbing
2
篇文章
5
次点赞
swet123
1
篇文章
4
次点赞
Days
1
篇文章
4
次点赞
YZRD
1
篇文章
2
次点赞
阳光的掌控者
1
篇文章
1
次点赞
回到
顶部
发布
问题
分享
好友
手机
浏览
扫码手机浏览
投诉
建议
回到
底部