我是这么操作的! 先有一个按键扫描程序
- static void App_TaskKbd (void *p_arg)
- {
- /* 按键前一个状态 */
- CPU_BOOLEAN b1_prev;
- /* 按键当前状态 */
- CPU_BOOLEAN b1;
- CPU_INT08U key;
- (void)p_arg;
- /* 默认松开状态 */
- b1_prev = DEF_FALSE;
- key = 1;
- while (DEF_TRUE)
- {
- /* 获得按键状态 */
- b1 = BSP_PB_GetStatus(1);
- /* 当前状态 松开 前一个状态 拿下 */
- if ((b1 == DEF_TRUE) && (b1_prev == DEF_FALSE))
- {
- if (key == 2)
- {
- key = 1;
- BSP_LED_Off(2);
- }
- else
- {
- key++;
- BSP_LED_On(2);
- }
- /* 发送按键消息 */
- <FONT color=red>GUI_SendKeyMsg(GUI_KEY_F1 ,1);</FONT>
- /*发送消息 */
- OSMboxPost(App_UserIFMbox, (void *)key);
- }
- /* 新状态变成旧状态 */
- b1_prev = b1;
- /* */
- OSTimeDlyHMSM(0, 0, 0, 20);
- }
- }
复制代码 检测到按键的下降沿时 发送消息GUI_SendKeyMsg(GUI_KEY_F1 ,1); GUI_KEY_F1
在GUI.h中定义。 在窗体部分代码中,在按键消息中添加 GUI_KEY_F1的处理函数。
- /* 按键消息 */
- case WM_KEY:
- switch (((WM_KEY_INFO*)(pMsg->Data.p))->Key)
- {
- case GUI_KEY_ESCAPE:
- GUI_EndDialog(hWin, 1);
- break;
- case GUI_KEY_ENTER:
- GUI_EndDialog(hWin, 0);
- break;
- case GUI_KEY_F1:
- /* 发送按键被按下消息 */
- <FONT color=red>OnButton0Clicked(pMsg);
- </FONT>break;
- }
- break;
复制代码 接着就可以调用按键触发的函数!
感觉和MFC非常像!
|