Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
RT-Thread一般讨论
怎样向一个GUI控件发送消息
发布于 2012-11-15 16:49:32 浏览:6835
订阅该版
正在学习RTGUI... 想实现一个虚拟的数字键盘,按下数字键(使用button控件)在相应的rtgui_textbox控件中显示。 我现在的实现方法是给每个按钮添加event_handler,然后在event_handler中手动调用rtgui_textbox_set_value()和rtgui_widget_update()刷新textbox的内容。 原来设想在event_handler()中直接向textbox发送键盘消息来自动刷新,但遇到点问题: 只有有焦点的控件才能接受键盘消息,可是按下按钮的时候,具有焦点的是按钮控件,而不是textbox。在按钮的事件处理函数中调用rtgui_widget_focus(RTGUI_WIDGET(the_textbox)),然后再发送键盘消息,可以看到textbox的内容更新,但是光标也显示出来,而且光标的刷新会在屏幕上不需要的位置显示一系列很长的竖线。 现在的问题是: 1) 上面的这种做法是否可行? 2) 有没有办法让按钮不获得焦点? ![LCD.jpg](https://oss-club.rt-thread.org/uploads/779_9dbbf710c0355a80e3c122b6228c87b8.jpg) ![LCD2.jpg](https://oss-club.rt-thread.org/uploads/779_21727cee7170eadc76aeb26221a86171.jpg) ![screenshot1.JPG](https://oss-club.rt-thread.org/uploads/779_3b4a7aef84456bc4a1021aa86b2581c1.jpg) ![lcd3.JPG](https://oss-club.rt-thread.org/uploads/779_e50f7c61d2cb097b7b974cb50a283843.jpg) ![11111111.png](https://oss-club.rt-thread.org/uploads/414_4b36bdedf5777ed1d07e178aff542544.png) ![22222222.png](https://oss-club.rt-thread.org/uploads/414_8e40b5cdb695954479f534b8a98442d1.png) ![333333.png](https://oss-club.rt-thread.org/uploads/414_1b58dd066ed2aff41a64b647d9d70397.png)
查看更多
18
个回答
默认排序
按发布时间排序
grissiom
2012-11-15
这家伙很懒,什么也没写!
试试 ``` RTGUI_WIDGET_FLAG(w) &= ~RTGUI_WIDGET_FLAG_FOCUSABLE ```
bernard
2012-11-16
这家伙很懒,什么也没写!
输入法这部分也需要思考下如何构建
xiao苦
2012-11-16
这家伙很懒,什么也没写!
可以考虑用LABEL。不要用textbox
softwind
2012-11-16
这家伙很懒,什么也没写!
感谢大家的回复。 我按照>试试 > > >``` >RTGUI_WIDGET_FLAG(w) &= ~RTGUI_WIDGET_FLAG_FOCUSABLE >``` --- 的指点改了一下,button确实可以不获得焦点(没有获得焦点时显示的虚线框)。 但还是需要手动设置一下 ``` rtgui_widget_focus(RTGUI_WIDGET(the_textbox)) ``` 先让textbox获得焦点。 现在的问题是,我在button的事件处理函数中, ``` void on_num1_btn_down(struct rtgui_object* object, struct rtgui_event* event) { struct rtgui_event_kbd kbd_event; rtgui_widget_focus(RTGUI_WIDGET(the_textbox)) } ``` 只设置了一下焦点,还没有发送键盘消息,结果屏幕显示 [attach]0[/attach] 有些莫名其妙的横线,有时是竖线,不知怎么回事? 说明一下: 我是创建了一个有3个Tab的notebook,每个Tab中创建了一个panel,先把panel加入到notebook中(notebook会自动调整panel的尺寸),然后把控件加入到一个panel中。
softwind
2012-11-16
这家伙很懒,什么也没写!
我在button的事件处理函数中,增加发送键盘消息的代码 ``` void on_num1_btn_down(struct rtgui_object* object, struct rtgui_event* event) { struct rtgui_event_kbd kbd_event; rtgui_widget_focus(RTGUI_WIDGET(the_textbox)); /* init keyboard event */ RTGUI_EVENT_KBD_INIT(&kbd_event); kbd_event.wid = RT_NULL; kbd_event.mod = RTGUI_KMOD_NONE; kbd_event.unicode = 0; kbd_event.key = RTGUIK_1; kbd_event.type = RTGUI_KEYDOWN; rtgui_server_post_event(&(kbd_event.parent), sizeof(kbd_event)); rt_thread_delay(10); /* post up event */ kbd_event.type = RTGUI_KEYUP; rtgui_server_post_event(&(kbd_event.parent), sizeof(kbd_event)); } ``` 显示屏变成这样: [attach]0[/attach]
shaolin
2012-11-16
这家伙很懒,什么也没写!
如果使用 RealTouch 的话,这类 GUI 相关的图片不需要通过照相的方式拍下来,而只需要在 finsh 下使用抓图函数, 貌似是 screen_capture("/SD/screen.bmp") 就可以将屏幕截图保存成 BMP 格式,存到 SD 卡上了。
grissiom
2012-11-16
这家伙很懒,什么也没写!
这黑线…… LZ 用的是什么版本的 RTGUI?
softwind
2012-11-16
这家伙很懒,什么也没写!
我看一下版本。
softwind
2012-11-16
这家伙很懒,什么也没写!
>如果使用 RealTouch 的话,这类 GUI 相关的图片不需要通过照相的方式拍下来,而只需要在 finsh 下使用抓图函数, 貌似是 screen_capture("/SD/screen.bmp") 就可以将屏幕截图保存成 BMP 格式,存到 SD 卡上了。 --- 非常感谢。是screenshot("/***.bmp")。
softwind
2012-11-16
这家伙很懒,什么也没写!
>这黑线…… > >LZ 用的是什么版本的 RTGUI? --- 我从GitHub上下载最新的版本试了一下,现象一样。
撰写答案
登录
注册新账号
关注者
0
被浏览
6.8k
关于作者
softwind
这家伙很懒,什么也没写!
提问
41
回答
153
被采纳
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-thread 小内存算法源码分析
2
env中添加lvgl软件包后,keil编译包--c99错误
3
【NXP-MCXA153】 定时器驱动移植
4
GD32F450 看门狗驱动适配
5
【NXP-MCXA153】看门狗驱动移植
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
AT
Bootloader
Hardfault
CAN总线
FinSH
ART-Pi
USB
DMA
文件系统
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
RTC
FAL
rt-smart
ESP8266
I2C_IIC
UART
WIZnet_W5500
ota在线升级
PWM
freemodbus
flash
cubemx
packages_软件包
BSP
潘多拉开发板_Pandora
定时器
ADC
GD32
flashDB
socket
中断
编译报错
Debug
rt_mq_消息队列_msg_queue
SFUD
keil_MDK
msh
ulog
C++_cpp
MicroPython
本月问答贡献
踩姑娘的小蘑菇
7
个答案
2
次被采纳
a1012112796
18
个答案
1
次被采纳
红枫
5
个答案
1
次被采纳
Ryan_CW
5
个答案
1
次被采纳
张世争
4
个答案
1
次被采纳
本月文章贡献
YZRD
3
篇文章
6
次点赞
catcatbing
3
篇文章
6
次点赞
lizimu
2
篇文章
11
次点赞
qq1078249029
2
篇文章
2
次点赞
xnosky
2
篇文章
1
次点赞
回到
顶部
发布
问题
分享
好友
手机
浏览
扫码手机浏览
投诉
建议
回到
底部