|
在做触摸edit弹出小键盘的实验时,由于没有使用回调机制,只是定期使用函数”GUI_Exec();”进行更新,所以由此出现了一些问题。
主要是在触摸edit弹出小键盘后怎么返回的事情。现在虽然已经实现了重新显示小键盘弹出之前的界面,但我是直接重新绘制整个界面,如果后期加入背景图片的话,这样刷屏是不行的。
所以想问下各位好汉有什么更好的方式吗?至于删除小键盘界面的句柄,我试了下貌似不行,也许是我的“打开方式不对”?先谢过各位啦。部分代码我贴在下面:
- void FunctionTouchJudge(FunctionList functionList)
- {
- /*
- ** 函数说明:
- 1.此函数用来判断触摸区域是不是在function范围
- 2.function按钮的功能:
- 0.切换窗口
- 3.小键盘输入
- 4.关闭窗口(小键盘是ENT键)
- */
- int xstart, ystart, xend, yend;
- xstart = functionList.data.x;
- ystart = functionList.data.y;
- xend = functionList.data.width + xstart;
- yend = functionList.data.height + ystart;
- if (PID_INFO.y <= yend && PID_INFO.x <= xend &&
- PID_INFO.y >= ystart && PID_INFO.x >= xstart &&
- TouchCondition == 0)
- {
- switch (functionList.data.FunctionType)
- {
- case 0:
- TouchCondition = 1;
- showWindow(functionList.data.NextWindowID);
- break;
- case 1:
- break;
- case 2:
- break;
- case 3:
- /*
- ** 此部分问题说明:
- 1.需要写好另一个处理函数,此函数用来处理小键盘按键的输入信息
- 2.在输入后使用函数传递到小键盘中间的edit中
- 3.在使用ENT键(此时2017-7-25版本)时将edit中的数据从小键盘窗口传递到原窗口的edit上
- */
- break;
- case 4:
- /*
- ** 此部分问题说明:
- 1.现在暂时做成了直接清屏显示原界面的方式,但是这种方式显示速度很慢,特别是后期加上背景图片后。现在有以下两个方案:
- 1.删除小键盘窗口,这样做的话理论上只刷新被小键盘覆盖的那部分区域,具体怎么实施我并没有头绪,注释掉的那部分就是这个工作
- 2.在小键盘关闭的时候只重绘窗口的一部分区域,这种做法在理论上也是可行的,但是具体怎么实施我也并没有深想
- 2.实际上应该使用元件ID“3”来标记这个按键,因为这个按键同样是小键盘上面的按键,也就是说应该在上面case 3中执行此操作
- */
- TouchCondition = 1;
- //WM_DeleteWindow(LastHwin); //1.删除小键盘界面的句柄
- //GUI_Exec();
- //WM_InvalidateWindow(LastKeyboardHwin);
- //WM_Exec();
- //WM_Paint(LastHwin);
- showWindow(LastWindowID); //2.直接显示原界面
- break;
- default:
- break;
- }
- }
- else
- {
- TouchCondition = 0;
- }
- }
复制代码 |
|