OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3259|回复: 3

问题1:EMWIN窗口切换后,第一次点击子窗口会闪烁. 问题2:窗口切换时闪烁 求大佬帮忙看下,

[复制链接]

1

主题

2

帖子

0

精华

新手入门

积分
16
金钱
16
注册时间
2019-7-29
在线时间
4 小时
发表于 2019-8-15 10:39:23 | 显示全部楼层 |阅读模式
1金钱
从主窗口跳到子窗口后,第一次点击子窗口的任意按钮都会闪烁一下;还有就是窗口切换时会闪烁一下。
我这个子窗口是覆盖上去的,来回切换几次后,就很卡。
怎样才能让显示一个窗口时,把其他的窗口清理掉,

主窗口的部分代码:
case WM_NOTIFY_PARENT:

    Id    = WM_GetId(pMsg->hWinSrc);
    NCode = pMsg->Data.v;
    switch(Id) {
    case ID_BUTTON_0: // 按钮按下后,跳到子窗口 CreateLED
      switch(NCode) {
      case WM_NOTIFICATION_CLICKED:
        break;
      case WM_NOTIFICATION_RELEASED:
    CreateLED();
        break;
      }
      break;

下面是子窗口的部分代码:
  case WM_NOTIFY_PARENT:
    Id    = WM_GetId(pMsg->hWinSrc);
    NCode = pMsg->Data.v;
    switch(Id) {
    case ID_BUTTON_0: // Notifications sent by 'Button'
      switch(NCode) {
      case WM_NOTIFICATION_CLICKED:
     LED0=0;
     LED1=0;
        break;
      case WM_NOTIFICATION_RELEASED:
        break;
      }
      break;
    case ID_BUTTON_1: // Notifications sent by 'Button'
      switch(NCode) {
      case WM_NOTIFICATION_CLICKED:
        break;
      case WM_NOTIFICATION_RELEASED:
    LED0=0;
     LED1=1;
        break;
      }
      break;
    case ID_BUTTON_2: // Notifications sent by 'Button'
      switch(NCode) {
      case WM_NOTIFICATION_CLICKED:
     LED0=1;
     LED1=0;
        break;
      case WM_NOTIFICATION_RELEASED:
        break;
      }
      break;
    case ID_BUTTON_3: // Notifications sent by 'Button'
      switch(NCode) {
      case WM_NOTIFICATION_CLICKED:
        break;
      case WM_NOTIFICATION_RELEASED:
     CreateDianji();
        break;
      }
      break;
    }
    break;
  default:
    WM_DefaultProc(pMsg);
    break;
  }
}
WM_HWIN CreateLED(void) {
  WM_HWIN hWin;
  hWin = GUI_CreateDialogBox(_aDialogCreate, GUI_COUNTOF(_aDialogCreate), _cbDialog, WM_HBKWIN, 0, 0);
  return hWin;
}


正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

31

主题

2183

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
14287
金钱
14287
注册时间
2018-8-3
在线时间
1147 小时
发表于 2019-8-15 18:41:24 | 显示全部楼层
你开启窗口使用内存设备了没有
回复

使用道具 举报

0

主题

11

帖子

0

精华

新手上路

积分
29
金钱
29
注册时间
2019-3-1
在线时间
6 小时
发表于 2019-8-28 11:02:48 | 显示全部楼层
翼行园子 发表于 2019-8-15 18:41
你开启窗口使用内存设备了没有

您说的内存设备是指使用存储设备(例如WM_SetCreateFlags(WM_CF_MEMDEV);)吗?
还是说创建任务使用UCOSIII分配的堆栈?
我最近也遇到楼主说的问题单不知道怎么解决。
来回切换几次窗口之后就会卡死在一个窗口。
用的函数就是GUI_ExecCreatedDialog()与GUI_EndDialog()
回复

使用道具 举报

0

主题

11

帖子

0

精华

新手上路

积分
29
金钱
29
注册时间
2019-3-1
在线时间
6 小时
发表于 2019-8-28 11:06:30 | 显示全部楼层
翼行园子 发表于 2019-8-15 18:41
你开启窗口使用内存设备了没有

会不会是任务堆栈溢出了,一次一次的来回切换,把分配的堆栈用到头就卡死了。我对堆栈这个不是很清楚不知道有没有原理性的错误,请谅解。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-26 04:58

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表