备注:(1)打开工程目录下的"Exe\GUISimulationDebug.exe"即可看到效果。(2)看完教程000~005就基本会用emWin做项目,其他章节可以需要时再参考。
  用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) {
      caseWM_NOTIFICATION_CLICKED: //按下动作消息
        break;
      caseWM_NOTIFICATION_RELEASED://弹起动作消息
        WM_HideWindow(hPage[0]); //隐藏Page0
        WM_ShowWindow(hPage[1]);//显示Page1
        break;
      }
      break;
    }
    break;
......

源码/软件下载

转载于:https://blog.51cto.com/neqee/2084567

emWin 2天速成实例教程002_多个页面窗口切换相关推荐

  1. emWin 2天速成实例教程012_基于STM32单片机的全键盘中文汉字拼音输入法

    备注:(1)打开工程目录下的"Exe\GUISimulationDebug.exe"即可看到效果.(2)看完教程000-005就基本会用emWin做项目,其他章节可以需要时再参考. ...

  2. emWin 2天速成实例教程000_如何快速入门ucGUI/emWin

    备注:(1)打开工程目录下的"Exe\GUISimulationDebug.exe"即可看到效果.(2)看完教程000-005就基本会用emWin做项目,其他章节可以需要时再参考. ...

  3. emWin 2天速成实例教程007_Graph波形曲线图形控件使用方法

    备注:(1)打开工程目录下的"Exe\GUISimulationDebug.exe"即可看到效果.(2)看完教程000-005就基本会用emWin做项目,其他章节可以需要时再参考. ...

  4. php做网页的表格,dreamweaver做网页实例教程 利用表格美化页面

    在浏览网页的时候可以发现,很多用于网站排版的表格都是经过美化处理的,这些表格不仅起了布局排版的作用,而且在很大程度上美化了网页,使网页看起来更加漂亮.新颖. 效果说明 利用表格美化页面的方式有很多种. ...

  5. matlab实例 pdf,matlab65实例教程(含语句注释).pdf

    matlab65实例教程(含语句注释).pdf 1 2. 基础准备及入门基础准备及入门 2.1 MATLAB 5.x 版对外部系统的要求版对外部系统的要求 2.2 MATLAB 的安装的安装 2.3 ...

  6. Silverlight实例教程 - Validation数据验证开篇

    Silverlight 4 Validation验证实例系列 Silverlight实例教程 - Validation数据验证开篇 Silverlight实例教程 - Validation数据验证基础 ...

  7. 改变窗口背景_Illustrator实例教程:只需三步,利用画笔描边做出炫酷的背景

    今天我们给大家带来一篇Illustrator实例教程,教大家只用三步,就能做出非常炫酷的背景效果.当然,这个方法也是我在平时的工作中发现和总结的,希望能够对你有所帮助. 我们先来看一下最终的效果吧! ...

  8. Silverlight实例教程 - Out of Browser开篇

    众所周知,学习一门IT技术,最关键的是实践,无论是软件开发还是网络调试,只要在真实环境下勤于动手和思考,很快就能掌握一门技术,Silverlight也不例外.为了帮助更多朋友快速学习掌握Silverl ...

  9. 《HTML5与CSS3实例教程》

    <HTML5与CSS3实例教程> 基本信息 作者: (美)Brian P. Hogan 译者: 卢俊祥 丛书名: 图灵程序设计丛书 出版社:人民邮电出版社 ISBN:97871153634 ...

最新文章

  1. 这道「传说级」的数学题,为什么有 3 个正确答案?
  2. 手机充电IC设置电流与实测电流不一致问题剖析
  3. linux测试游戏下载,一波超人内测版最新下载-一波超人内测版游戏下载v1.0.2-Linux公社...
  4. Docker基础(3)——基础网络模型
  5. Angular2开发拙见——组件规划篇
  6. SnapHelper硬核讲解
  7. 商务与经济统计学习 --多个比率的比较、独立性及拟合优度检验
  8. python 日期的周数_术业有专攻:日期时间模块datetime
  9. 使用PHP 的 curl 爬取 青果教务系统 课表
  10. 东西向流量/南北向流量
  11. 鹏业安装算量导入布局图纸的方法
  12. deamon(大鹅模拟器steam)
  13. 如何给服务器文件设置权限,如何设置服务器文件权限
  14. CF1293E Xenon‘s Attack on the Gangs
  15. Win7多用户下开机只显示一个用户
  16. windows11/windows10设置移动热点自启(图文步骤教程)
  17. charles抓包一直返回unkown的解决方法
  18. Linux c fopen() 与fclose() 使用
  19. react使用qrcode.react生成扫描二维码
  20. element-tiptap使用笔记

热门文章

  1. 判断手机号码是否符合要求
  2. IEDA快速书写代码快捷键
  3. win7未启用计算机远程访问,Win7系统下连接远程提示未启用对服务器的远程访问如何解决...
  4. uefi多linux系统启动盘,DIY制作无需格BIOS+UEFI双启动U盘工具|支持syslinux+grub+boomgr+grub2多启动...
  5. 在Eclipse Indigo安装UML2 Tools(反向工程)
  6. Integer的==问题
  7. 南邮攻防训练平台逆向maze
  8. IOS 2D游戏开发框架 SpriteKit--续(创建敌对精灵)
  9. 结对开发——环形一维数组求最大子数组和
  10. C# 温故而知新:Stream篇(—)