首页 > 技术服务> emWin学习课堂emWin学习课堂

技术支持与下载

我们为您提供最优质的售前售后服务,有任何问题及建议都可以联系我们。

免费技术服务热线:

市场业务咨询电话:

周一至周五(8:30-12:00、13:00-17:30)

联系我们

广州市番禺区南华路62号华景新城华倚园1梯301

全国销售网络

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

日期:2016-11-07 16:15:51  来源:

备注:(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) {

    case WM_NOTIFICATION_CLICKED:  //按下动作消息

      break;

    case WM_NOTIFICATION_RELEASED: //弹起动作消息

      WM_HideWindow(hPage[0]);   //隐藏Page 0

      WM_ShowWindow(hPage[1]);   //显示Page 1

      break;

    }

    break;

  }

  break;

.....


本地下载 网盘下载
广州尼奇光电科技有限公司 | 粤ICP备17079366号-1

更多...