开发任务:
配置json按钮的时候,可以配置延时数据,最大60s,设定后按下按钮到时间后自动发码。json配置时每一个按钮都有一个yanshi参数,用来使按钮按下后按参数值延时发码,按钮的UI显示也要在发码后随即显示。
思路:从json文件中获取到yanshi这个参数的值,判断它的值是否为零;为零时表示按键正常不用延时操作;否则,需要启动延时操作。延时操作有两个函数,一个函数作为在按键按下时记录到yanshi参数的值并且放到一个全局结构体中,结构体中包含了延时完成之后需要操作的变量参数。一个函数需要放到一个线程中,一直进行判断,延时操作响应之后,等待延时时间到了时进行发码。
具体实行:
- 获取json文件参数的办法,使用函数
s = json_check_string(arrobj2[j],"yanshi"); //校验json文件中的yanshi参数的值
g_SmartHomeInfo->m_pPage[i].m_pBtn[j].delay = strtol((char*)s.c_str(),NULL,10);
//将获取得到的yanshi参数里面的值放到全局结构体成员delay中;
这是初始化json页面时进行的操作。
2.在CAppmain.cpp工程文件中,类CMainApp里面有个函数
BOOL DoProcess(DWORD uMsg, DWORD wParam, DWORD lParam, DWORD zParam);通过按键或者触摸都会跑进这个函数的
case TOUCH_MESSAGE:
{
lbg_outtime = 0;
DoCtrlTouchMsg(wParam,lParam,zParam);
}
break;
触摸信息里面。也就是进入函数DoCtrlTouchMsg(wParam,lParam,zParam);
通过分析可以发现:
switch(pBtn->btnType)
{
case BTNTYPE_COMBINATION_CONTROL://集控按钮处理!
ButtonCombination(pBtn,pressCount);
break;
case