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

来源:互联网 发布:mac怎么解压缩rar 编辑:程序博客网 时间:2024/06/16 02:02
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 0
原创粉丝点击