UCGUI实现滑屏的设计思路
来源:互联网 发布:软件研发合同范本 编辑:程序博客网 时间:2024/06/07 02:14
UCGUI实现滑屏的设计思路
UCGUI是一个轻量级的界面系统,即使如此,我们仍然可以实现一些令人惊喜的界面操作,比如针对一些多窗体,稍作处理,我们就可以实现譬如现代掌上设备常见的滑屏操作。操作要点如下:1.定义两个左右滑屏跳接的窗体(或对话框,这里以对话框举例)。
比如,hWin1,hWin2(这里用窗体句柄来代表窗体)。hWin1的窗体结构和回调函数为_aDialogCreate1,_cbCallback1, hWin2的窗体结构和回调函数为_aDialogCreate2,_cbCallback2。
2.响应上面窗体回调函数中的WM_PID_STATE_CHANGED消息。
通过跟踪代码得知,WM_PID_STATE_CHANGED为非控件区捕获触摸屏消息。而其他两个相关消息WM_TOUCH_CHILD,WM_TOUCH则为控件捕获触摸屏消息。即当我们按下非控件区时,会产生WM_PID_STATE_CHANGED消息。上面其他两个消息则为当我们在控件上操作触摸屏时产生的消息。
3.实现思路:
pMsg->Data.p是WM_PID_STATE_CHANGED消息中系统传递过来的一个参数,其为一个WM_PID_STATE_CHANGED_INFO类型的机构体指针。它包含当前触摸屏事件中的x,y轴坐标以及按下抬起的状态。在此,设置一个静态变量记下触摸屏按下时的x坐标,然后在在触摸屏抬起时比较抬起时触摸屏x坐标和上次按下时x坐标的差值,如果大于(右滑)或小于(左滑)某一预定义的值(即在触摸屏上滑过x轴坐标),即判断为右滑或左滑。
4.相关的代码模型如下:
#define TS_SLIDE_MIN_X 100 //滑动的最小X距离值
//===========================================================//第一个窗体hWin1的消息响应处理,注意这里假设hWin1为当前窗体(其已被创建并显示)。
//且为向右滑动推出第二个窗体hWin2
void _cbCallback1(WM_MESSAGE * pMsg){
......
static int ts_x;
//static int ts_y;
WM_PID_STATE_CHANGED_INFO *pTSState;
......
case WM_PID_STATE_CHANGED:
pTSState = (WM_PID_STATE_CHANGED_INFO*)(pMsg->Data.p);if (pTSState->State) //按下{
ts_x = pTSState->x;
}else if ((pTSState->x - ts_x) > TS_SLIDE_MIN_X){
WM_HideWindow(hWin1);if (hWin2 == NULL){
hWin2 = GUI_CreateDialogBox(_aDialogCreate2,GUI_COUNTOF(_aDialogCreate2),\
&_cbCallback2, 0, 0, 0);
}else{
WM_ShowWindow(hWin2);
}
}break;........
}
//===========================================================
//第二个窗体hWin2的消息响应处理,注意这里假设hWin2为滑动产生的窗体。
//向左滑动推出第二个窗体hWin2
{
......
static int ts_x;
//static int ts_y;
WM_PID_STATE_CHANGED_INFO *pTSState;
......
case WM_PID_STATE_CHANGED: //如果点中其他非按钮类
pTSState = (WM_PID_STATE_CHANGED_INFO*)(pMsg->Data.p);
if (pTSState->State) //按下{ts_x = pTSState->x;}else if ((ts_x - pTSState->x) >TS_SLIDE_MIN_X){WM_HideWindow(hWin2);WM_ShowWindow(hWin1);}break;
.......
}
类此,也可实现上下滑屏。
- UCGUI实现滑屏的设计思路
- ucgui透明效果的实现
- UCGUI响应物理按键的思路,没有用触摸
- Windows扫雷的设计思路与实现
- UCGUI中的实现透明窗体的原理
- 基于ucgui的多语言实现方案
- 自动化设计实现思路
- ucgui timer实现分析
- ucgui timer实现分析
- 初始的设计思路
- Mysql的设计思路
- 设计框架的思路
- 俄罗斯方块的设计思路
- BaseDao的设计思路
- 通过Domino COM实现Web的痕迹保留设计思路
- ASP.NET应用程序级缓存的设计思路与实现
- 数据库连接池的设计思路及java实现
- 数据库连接池的设计思路及java实现 .
- 百练 2972 确定进制
- 标准字符串std::string和System::String, CString之间的转换
- 韩顺平_PHP程序员玩转算法公开课(第一季)08_阶段性就业指导_学习笔记_源代码图解_PPT文档整理
- 百练 2975 Caesar密码
- 百练 2733 判断闰年
- UCGUI实现滑屏的设计思路
- [Leetcode] Populating Next Right Pointers in Each Node II
- 百练 2712 细菌繁殖
- python 随机数 random
- 百练 2744 子串
- 百练 2964 日历问题
- 百练 2723 不吉利日期
- Goodbye Forefront, it was nice knowing you
- 百练 2981 大整数加法