UCGUI响应物理按键的思路,没有用触摸

1.按键相应分为推式和拉式...一般GUI都只用拉式...不用推式....
2.自己写一个函数void GUI_KEY_Exec(void)...每次在GUI_Exec()前执行以下....
在这个函数里查询按键即可...然后用GUI_SendKeyMsg(Key, 1); 发送即可...
3.按键操作和触摸屏操作不太一样...
按键只能发送给当前的焦点窗口...所以在每次按键后...或者每次事件后...(任何事件)...
你要指定一次谁是焦点...WM_SetFocus(Hwin)...
4.处理按键只能是焦点窗口的callback...3楼那种....
5.ucGUI不是一个按键GUI...他的一部分控件在获得焦点后不会把按键信息给他的Parent...
你需要在焦点窗口里相应...然后再一次传递给Parent...
或者简单点直接 WM_SetFocus然后GUI_SendKeyMsg触发...如果按键少...界面简单这样是可以的...

6.再次注意3....按键之后你仍需要用WM_SetFocus指定谁是焦点接收按键...要不就成一次性的了..


按键后调用GUI_StoreKeyMsg(GUI_KEY_F1,1);    GUI_KEY_F1 为按键编号,后面为按键状态,这样给响应的窗口发送按键信息

窗口处理按键信息是在对应的callback函数里面,大概像下面
static void _cbCallback_TEST(WM_MESSAGE * pMsg) 
{

    WM_HWIN hWin = pMsg->hWin;

    switch (pMsg->MsgId) 
    {
        case WM_KEY:
            switch (((WM_KEY_INFO*)(pMsg->Data.p))->Key) 
            {
                case GUI_KEY_ESCAPE:
                    break;
                case GUI_KEY_ENTER:
                    break;
                case GUI_KEY_F1:        
                break;
                case GUI_KEY_F2:
                break;
         }
}



GUI_StoreKeyMsg()
把消息数据(Key, PressedCnt)存进键盘缓冲器
GUI_SendKeyMsg()
把键盘数据发送到输入焦点所在窗口。如果没有窗口有输入焦点,则调用GUI_StoreKeyMsg()函数将数据存储至输入缓冲器之中。

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值