emWin 2天速成实例教程002_多个页面窗口切换
2017-08-14 11:43
555 查看
用emWin做界面,可以简单理解为每个C文件即对应一个页面,如果要设计多个页面的界面怎么办?生成多个界面C文件并在回调函数的操作触发消息中用隐藏/显示页面函数:WM_HideWindow()和WM_ShowWindow()实现界面切换程序即可。
当界面有多个页面需要切换显示时,有两种方式可以实现:(1)隐藏/显示方式:程序启动时创建所有页面窗口,程序运行时隐藏当前无需显示的页面,同时显示当前需要显示的页面;(2)删除/创建方式:程序启动时创建开机需要显示的页面窗口,程序运行时删除当前无需显示的页面,同时创建当前需要显示的页面。
这两种方式的根本区别是:第(1)种方式由于所有页面都是真实存在的,因此占用更多的内存。对于界面简单的应用,或者CPU有足够RAM的情况下,建议使用隐藏/显示方式,因为删除/创建方式涉及到动态内存的申请和释放,处理不当或程序不严谨容易出现内存错误造成死机现象,而且删除/创建方式由于切换页面时需要创建窗口,因此切换页面时速度比隐藏/显示方式更慢些。
这里只说明通过隐藏/显示的方式做页面窗口切换,使用到emwin两个窗口管理API函数:
void WM_HideWindow(WM_HWIN hWin); //隐藏窗口函数,hWin是窗口的句柄
void WM_ShowWindow(WM_HWIN hWin); //显示窗口函数,hWin是窗口的句柄
……..
case WM_NOTIFY_PARENT: //操作触发消息处理(程序会跑到这里),比如点击按键、点击编辑框(任何的操作)等等......
Id = WM_GetId(pMsg->hWinSrc);
NCode = pMsg->Data.v;
switch(Id) {
case ID_BUTTON_1:
//ID为ID_BUTTON_1的按键被点击
switch(NCode) {
case WM_NOTIFICATION_CLICKED:
//按下动作消息
break;
case WM_NOTIFICATION_RELEASED:
//弹起动作消息
WM_HideWindow(hPage[0]);
//隐藏Page 0
WM_ShowWindow(hPage[1]);
//显示Page 1
break;
}
break;
}
break;
……..
当界面有多个页面需要切换显示时,有两种方式可以实现:(1)隐藏/显示方式:程序启动时创建所有页面窗口,程序运行时隐藏当前无需显示的页面,同时显示当前需要显示的页面;(2)删除/创建方式:程序启动时创建开机需要显示的页面窗口,程序运行时删除当前无需显示的页面,同时创建当前需要显示的页面。
这两种方式的根本区别是:第(1)种方式由于所有页面都是真实存在的,因此占用更多的内存。对于界面简单的应用,或者CPU有足够RAM的情况下,建议使用隐藏/显示方式,因为删除/创建方式涉及到动态内存的申请和释放,处理不当或程序不严谨容易出现内存错误造成死机现象,而且删除/创建方式由于切换页面时需要创建窗口,因此切换页面时速度比隐藏/显示方式更慢些。
这里只说明通过隐藏/显示的方式做页面窗口切换,使用到emwin两个窗口管理API函数:
void WM_HideWindow(WM_HWIN hWin); //隐藏窗口函数,hWin是窗口的句柄
void WM_ShowWindow(WM_HWIN hWin); //显示窗口函数,hWin是窗口的句柄
……..
case WM_NOTIFY_PARENT: //操作触发消息处理(程序会跑到这里),比如点击按键、点击编辑框(任何的操作)等等......
Id = WM_GetId(pMsg->hWinSrc);
NCode = pMsg->Data.v;
switch(Id) {
case ID_BUTTON_1:
//ID为ID_BUTTON_1的按键被点击
switch(NCode) {
case WM_NOTIFICATION_CLICKED:
//按下动作消息
break;
case WM_NOTIFICATION_RELEASED:
//弹起动作消息
WM_HideWindow(hPage[0]);
//隐藏Page 0
WM_ShowWindow(hPage[1]);
//显示Page 1
break;
}
break;
}
break;
……..
相关文章推荐
- emWin 2天速成实例教程002_多个页面窗口切换
- emWin 2天速成实例教程003_Framewin和Window窗口控件和2D绘图
- emWin 2天速成实例教程003_Framewin和Window窗口控件和2D绘图
- emWin 2天速成实例教程012_基于STM32单片机的全键盘中文汉字拼音输入法
- emWin使用资料收集(一) ----- emWin 2天速成实例教程008_IconView图标控件使用方法
- emWin 2天速成实例教程-000
- emWin 2天速成实例教程000_如何快速入门emWin/ucGUI
- emWin 2天速成实例教程004_软件定时器(Timer)和位图片动画
- emWin 2天速成实例教程008_IconView图标控件使用方法
- emWin 2天速成实例教程017_屏幕无操作进入待机状态的实现方法
- emWin 2天速成实例教程010_Menu标题菜单控件使用方法
- emWin 2天速成实例教程014_BMP位图图片显示以及位图皮肤的使用方法
- emWin 2天速成实例教程006_矩阵键盘、PS2键盘、实体按键消息的使用方法(MDK工程)
- emWin 2天速成实例教程004_软件定时器(Timer)和位图片动画
- emWin 2天速成实例教程001_GUIBuilder的使用方法
- emWin 2天速成实例教程015_二维码控件的使用示例
- emWin 2天速成实例教程007_Graph波形曲线图形控件使用方法
- emWin 2天速成实例教程009_ListView列表框控件使用方法
- emWin 2天速成实例教程016_不规则异形进度条控件实现方法
- emWin 2天速成实例教程005_控件聚焦和用户消息的使用方法