硬汉嵌入式论坛

 找回密码
 立即注册
查看: 1947|回复: 6
收起左侧

[emWin] 窗口句柄设置为全局变量,隐藏后再显示出来,不能正常显示

[复制链接]

17

主题

121

回帖

172

积分

初级会员

积分
172
发表于 2017-3-28 09:00:39 | 显示全部楼层 |阅读模式
借鉴V6 XBF全字库历程  按键按下后 先把窗口隐藏起来——>烧写字库——>显示窗口 想实现这样的功能 ,但是发现 :
1、窗口句柄设置为全局变量, 隐藏后 烧完字库窗口将不显示;  
2、窗口句柄设置为局部变量,隐藏后 烧完字库 窗口可以显示,但是温湿度数据不正常(全为0)  请问是什么原因


        hWinMain = GUI_CreateDialogBox(_aDialogCreateDesktop, GUI_COUNTOF(_aDialogCreateDesktop), _cbDialogDesktop, WM_HBKWIN, 0, 0);
    hWinTaskBar = GUI_CreateDialogBox(_aDialogCreatetTask, GUI_COUNTOF(_aDialogCreatetTask), _cbDialogTask, 0, 0, 0);                                                                                            
    WM_CreateTimer(hWinTaskBar, 0, 1000, 0);
   
    while(1)
    {
        p_msg = OSTaskQPend(20,
                                                OS_OPT_PEND_BLOCKING,
                                                &msg_size,
                                                &ts,
                                                &err);
        if (1==p_msg[0])
        {
            WM_HideWindow(hWinMain);        
            WM_HideWindow(hWinTaskBar);        
            
            LoadFontLib();
            
            WM_ShowWindow(hWinMain);        
            WM_ShowWindow(hWinTaskBar);        
        }
        else
        {
            OSSchedLock(&err);
            if(1==Read_DHT11(&DHT11_Data))
            {
                sprintf(tempstr,"%d.%d",DHT11_Data.temp_int,DHT11_Data.temp_deci);
                printf ("\r\n%s\r\n",tempstr);
                TEXT_SetText(WM_GetDialogItem(hWinMain, ID_TEXT_5), tempstr);
                sprintf(tempstr,"%d.%d",DHT11_Data.humi_int,DHT11_Data.humi_deci);
                printf ("\r\n%s\r\n",tempstr);
                TEXT_SetText(WM_GetDialogItem(hWinMain, ID_TEXT_6), tempstr);
            }
            OSSchedUnlock(&err);               
        }   
        GUI_Delay(5);
    }
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115728
QQ
发表于 2017-3-28 09:08:52 | 显示全部楼层
把这个函数LoadFontLib();屏蔽掉测试下看看。
回复

使用道具 举报

17

主题

121

回帖

172

积分

初级会员

积分
172
 楼主| 发表于 2017-3-28 09:30:13 | 显示全部楼层

回 eric2013 的帖子

eric2013:把这个函数LoadFontLib();屏蔽掉测试下看看。 (2017-03-28 09:08) 
首先还是非常感谢你的回复,屏蔽掉  看不出来有什么问题,但是就是不知道按键有没有响应  已经去掉LoadFontLib() 函数中GUI_Delay()函数了
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115728
QQ
发表于 2017-3-29 09:34:36 | 显示全部楼层
去掉函数LoadFontLib是为了验证是不是这个函数对你的工程有影响。去掉后,你可以加上个串口打印,验证是否响应了。
回复

使用道具 举报

17

主题

121

回帖

172

积分

初级会员

积分
172
 楼主| 发表于 2017-3-29 16:41:15 | 显示全部楼层

回 eric2013 的帖子

eric2013:去掉函数LoadFontLib是为了验证是不是这个函数对你的工程有影响。去掉后,你可以加上个串口打印,验证是否响应了。 (2017-03-29 09:34) 
谢谢,已经解决了。发现是sprintf函数和GUI_Delay函数的问题,已经用别的方式实。版主能解释一下
回复

使用道具 举报

17

主题

121

回帖

172

积分

初级会员

积分
172
 楼主| 发表于 2017-3-29 21:59:05 | 显示全部楼层

回 eric2013 的帖子

eric2013:去掉函数LoadFontLib是为了验证是不是这个函数对你的工程有影响。去掉后,你可以加上个串口打印,验证是否响应了。 (2017-03-29 09:34) 
问题就出在LoadFontLib函数里面的一个延时函数和一个打印到内存函数
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115728
QQ
发表于 2017-3-30 00:58:23 | 显示全部楼层
是不是使用sprintf时,定义的buf小了,可以加大下看看。另外加大emWin任务的任务栈大小。
回复

使用道具 举报

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

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2025-5-15 05:00 , Processed in 0.372888 second(s), 24 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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