gosman 发表于 2013-3-19 17:03:27

RTGUI中的button 如何与触摸屏结合??

我在STM32单片机中跑了RT-Thread操作系统,用RTGUI绘制了一个按钮,点击这个按钮会显示一个菜单,我把GUI界面显示到了触摸屏上。但是不知道怎么通过直接点击触摸屏实现这个按钮的功能~~~不知道有没有做过类似东西的人,求教!!

tiancaigao7 发表于 2013-3-19 17:45:32

rtgui_button_set_onbutton利用这个API来绑定一个button的回调函数,然后在回调函数里面生成,或者显示菜单就可以了剩下的关于触摸位置的解析和消息的传递RTT的GUI会自动搞定的。

gosman 发表于 2013-3-19 18:07:40

tiancaigao7 发表于 2013-3-19 17:45 static/image/common/back.gif
rtgui_button_set_onbutton利用这个API来绑定一个button的回调函数,然后在回调函数里面生成,或者显示菜单 ...

我编的GUI程序在mini240 quem 上跑 用了rtgui_button_set_onbutton这个函数,在电脑上用鼠标点那个button能达到我要的功能。我在STM32裸机中调了一下触摸屏,最后加上操作系统就不知道怎么回事了。。。我想知道系统怎么就知道你点击屏幕了呢??我刚接触这个两周多一点,对里边很多东西还不明白,您能再详细点解释一下吗?或者您有运行成功的代码吗?不知能否参考一下。。。。如果可以,请发到929250157@qq.cm这个邮箱。

gosman 发表于 2013-3-19 18:11:56

tiancaigao7 发表于 2013-3-19 17:45 static/image/common/back.gif
rtgui_button_set_onbutton利用这个API来绑定一个button的回调函数,然后在回调函数里面生成,或者显示菜单 ...

我的程序里确实是通过回调函数生成了一个menu。。。

先执行rtgui_button_set_onbutton(button, _onmenu);

产生menu的函数

static void _onmenu(struct rtgui_widget* widget, struct rtgui_event* event)
{
        rtgui_rect_t rect;

        rtgui_widget_get_rect(widget, &rect);
          
        rtgui_widget_rect_to_device(widget, &rect);

        if (menu != RT_NULL)
                rtgui_menu_pop(menu, rect.x1-250, rect.y2 - 50);//控制menu的位置
}



gosman 发表于 2013-3-19 18:13:06

gosman 发表于 2013-3-19 18:07 static/image/common/back.gif
我编的GUI程序在mini240 quem 上跑 用了rtgui_button_set_onbutton这个函数,在电脑上用鼠标点那个button ...

是不是我得把触摸这个事件加到操作系统里??

tiancaigao7 发表于 2013-3-19 19:07:36

OS里面忽悠一个触摸的线程,这个线程专门处理触摸的发生,并且将触摸的坐标通过消息发送给RTT的GUI的服务器端,服务器端根据坐标解析出到底是那个控件被触摸了,然后激活对应的回调函数。大致的过程是这样的。

gosman 发表于 2013-3-20 08:23:27

tiancaigao7 发表于 2013-3-19 19:07 static/image/common/back.gif
OS里面忽悠一个触摸的线程,这个线程专门处理触摸的发生,并且将触摸的坐标通过消息发送给RTT的GUI的服务器 ...

我找到了一个touch.c文件,里边确实是建了一个关于触摸屏的线程,但是我不知道里边的初始化应该根据什么配置??不知道能不能给指点一下。
页: [1]
查看完整版本: RTGUI中的button 如何与触摸屏结合??