guilcd的个人空间 https://blog.eetop.cn/1702925 [收藏] [复制] [分享] [RSS]

空间首页 动态 记录 日志 相册 主题 分享 留言板 个人资料

日志

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

已有 1752 次阅读| 2018-3-9 14:02 |系统分类:芯片设计

备注:(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;
......




源码/软件下载

点赞

评论 (0 个评论)

facelist

您需要登录后才可以评论 登录 | 注册

  • 关注TA
  • 加好友
  • 联系TA
  • 0

    周排名
  • 0

    月排名
  • 0

    总排名
  • 0

    关注
  • 2

    粉丝
  • 0

    好友
  • 0

    获赞
  • 0

    评论
  • 833

    访问数
关闭

站长推荐 上一条 /1 下一条

小黑屋| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-4-28 23:06 , Processed in 0.014311 second(s), 8 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
返回顶部