发 帖  
原厂入驻New
请问UCGUI里怎么触发BUTTON控件并执行某些操作?
156 触摸屏 LED
分享
前提,触摸屏移植成功,
触摸屏光标随触点能正常移动
建立了一个按钮控件,想通过使用触摸屏点击按钮实现LED的两灭,
但是发现在屏幕上点击按钮没反应,
该怎么实现按钮盒触摸屏的关联呢?
下边是一个书上的例子,这个又是怎么触发button动作呢
static void _DemoButton(void)
{
        BUTTON_Handle hButton;
        GUI_SetFont(&GUI_Font8x16);
        GUI_DispStringHCenterAt("Click on button...",160,90);
        hButton = BUTTON_CreateAsChild(110,110,100,40,WM_GetActiveWindow(),GUI_ID_OK,WM_CF_SHOW);
        BUTTON_SetText(hButton,"Click me...");
        while(GUI_WaitKey() != GUI_ID_OK);
        BUTTON_Delete(hButton);
        GUI_ClearRect(0,50,319,239);
        GUI_DispStringHCenterAt("hello",160,120);
        GUI_Delay(1000);
}
0
2020-3-17 01:34:15   评论 分享淘帖 邀请回答

相关问题

18个回答
下载一个ucGUIBuilder建立一个DIALOG
然后再DIALOG上建立一个BUTTON
然后开启BUTTON的事件处理函数中的CLICK事件
最后在Event.c文件中会产生一个函数,名字貌似为_OnButtonClick();吧,在这里面插入你的代码
以上操作都是在ucGUIBuilder软件生成的
最后点击软件上面一个绿色的实体箭头,run,生成三个文件
将这三个文件添加到你的工程里面
在main中调用Code.c文件中生成的那个_Demo();函数,即可
2020-3-17 06:54:03 评论

举报

手边没有现成的软件,只能口头描述一下了
2020-3-17 06:59:10 评论

举报

窗口的WM_NOTIFY_PARENT消息
2020-3-17 07:05:30 评论

举报

我按照你的方法建立了界面,但是点击屏幕上的按钮没任何反应的,光标也没反应,
2020-3-17 07:14:20 评论

举报

你把相应的代码贴上来,明天我给你看一下
2020-3-17 07:28:13 评论

举报

我认为是我触摸屏移植的有问题,之前是使用了战舰开发板的坐标转换方法实现光标移动的,这样和UCGUI结合不起来
又重新移植了, 我是参考 http://www.xiaomengyc.com/?post=9 这的文章移植的
但是移植完之后  光标不会移动
我单步跟踪到
static void _PID_Load(void) {
  #if (GUI_WINSUPPORT)
    WM_pfHandlePID = WM_HandlePID;
  #endif
}
处发现这个条件编译是成立的,
执行 WM_pfHandlePID = WM_HandlePID;
但是不执行WM_HandlePID的函数体,这是怎么回事
我改成
static void _PID_Load(void) {
  #if (GUI_WINSUPPORT)
     WM_HandlePID();
  #endif
}
光标就能移动了,  但是不是很准确,偏差较大
为什么呢?
2020-3-17 07:43:37 评论

举报

回复【6楼】5498折戟沉沙:
上面是工程完整源码,
2020-3-17 08:00:20 评论

举报

typedef int  WM_tfHandlePID(void);
      WM_tfHandlePID*    WM_pfHandlePID;
WM_pfHandlePID = WM_HandlePID;
WM_HandlePID是一个函数
请问WM_pfHandlePID是什么类型的
2020-3-17 08:09:55 评论

举报

uCGUI自己的机制是使用回调函数,当你点击按钮的时候,GUI内部函数会调用回调函数,里面有对ID的反馈,依据ID识别按的是什么,并执行你想要的操作,还有一般不用...AsChild 方式创建,否则需要指定父向窗口,直接Button_Create(...),一般是在窗体里面创建Button 参数里面有要求回调函数的
2020-3-17 08:25:19 评论

举报

已经成功了,非常感谢,
2020-3-17 08:47:22 评论

举报

在uCGUIBuilder.exe里如何会的控件句柄
我知道调用函数
LISTBOX_Handle LISTBOX_Create(const GUI_ConstString * ppText, 
                              int   x0, int y0, 
                              int   xSize, int ySize, 
                              int   Flags);能返回相应的句柄 
但是uCGUIBuilder使用的是对话框
建立了一个资源表,会调用上边的函数  但是返回值存哪去了,怎么得到???
2020-3-17 08:55:14 评论

举报

这个返回值,就是控件的句柄,得不得到没有任何关系——你可以看一看_Demo();函数中是怎么利用资源列表创建函数的,那个返回值没有用
你可以通过ID查找到这个ID对应的控件的句柄,见Code.c文件中,有一个通过ID查找句柄的函数,好像叫WM_GetDialogItem(hParent,ID);,具体的记不清了
2020-3-17 09:02:45 评论

举报

我大概是知道了 但是又有问题了
我是在一个事件里这样操作的 
void OnDropDownSelChanged(WM_MESSAGE * pMsg) 

 int SelItemNum;//选中条目的索引 
 WM_HWIN ListBoxHwin; 
 WM_HWIN Hwin; 
 Hwin=pMsg->hWin; 
  
 ListBoxHwin= WM_GetDialogItem(Hwin,GUI_ID_DROPDOWN0);//Returns the window handle of a dialog box item (widget). 
 SelItemNum = LISTBOX_GetSel(ListBoxHwin);//获得当前选择的单元的数量 
LISTBOX_GetItemText(ListBoxHwin,  SelItemNum , 
                        g_ListBoxItemBuffer, sizeof(g_ListBoxItemBuffer));//获得对应的内容 

但是 我发现读到的ListBoxHwin正确,但是读到的SelItemNum 不正确,我明明选择的第三个,返回的确实0X00061,不是应该返回2吗? 
是哪里的问题、????????、
2020-3-17 09:17:28 评论

举报

控件是DROPDOWN,你干嘛调用LISTBOX的API呢?!!!!!
试一下这个函数,int      DROPDOWN_GetSel          (DROPDOWN_Handle hObj);
2020-3-17 09:32:49 评论

举报

移植了UCGUI之后还要在进行触摸屏移植才能触发BUTTON控件吗??
2020-3-17 09:44:06 评论

举报

2020-3-17 10:01:28 评论

举报

你好,请问如何开启BUTTON的事件处理函数中的CLICK事件?新人小白一脸懵逼
2020-3-17 10:17:21 评论

举报

只有小组成员才能发言,加入小组>>

247个成员聚集在这个小组

加入小组

创建小组步骤

关闭

站长推荐 上一条 /7 下一条

快速回复 返回顶部 返回列表