硬汉嵌入式论坛

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

[emWin] 【EMWIN】桌面窗口从iconv创建了一个窗口后通过按键关闭窗口后返回桌面时不能正常显示。

[复制链接]

2

主题

9

回帖

15

积分

新手上路

积分
15
发表于 2020-6-13 01:27:23 | 显示全部楼层 |阅读模式
点击 iconv创建了一个窗口后通过按键关闭窗口后返回桌面时不能正常显示。背景桌面没有刷新,只有iconv图标出现是什么原因。已经使能了桌面窗口,桌面窗口是使用存储设备的。 模拟器上能够正常运行,在单片机上有这个问题。
微信图片_20200613012516.jpg
微信图片_20200613012508.jpg
回复

使用道具 举报

2

主题

9

回帖

15

积分

新手上路

积分
15
 楼主| 发表于 2020-6-13 01:32:00 | 显示全部楼层
在主程序中先用存储设备,再使能了桌面,再创建iconv

#ifdef WM_Set_MEMDEV
        WM_SetCreateFlags(WM_CF_MEMDEV);
#endif

#define WM_Set_MEMDEV //使能存储设备


       
        /*绘制桌面窗口背景图像——————————————*/
        hMempic = GUI_MEMDEV_CreateFixed(0,
                0,
                LCD_GetXSize(),
                LCD_GetYSize(),
                GUI_MEMDEV_HASTRANS,
                GUI_MEMDEV_APILIST_16,
                GUICC_M565);
        GUI_MEMDEV_Select(hMempic);
        GUI_JPEG_Draw(_ac1, sizeof(_ac1), 0, 0);

        GUI_MEMDEV_Select(0);
        /*使能桌面窗口(注意需要使能,否则背景图片无法绘制)*/
        WM_SetCallback(WM_HBKWIN, _cbBkWindow);

        /*绘制桌面窗口的背景图片 ------------------------------------------*/
        /* 第1个界面图标 */
        hIcon1 = _CreateICONVIEW(WM_HBKWIN,
                _aBitmapItem1,
                GUI_COUNTOF(_aBitmapItem1),
                GUI_ID_ICONVIEW0,
                ICONVIEW_LBorder,
                ICONVIEW_TBorder,
                ICONVIEW_Width,
                ICONVIEW_Height * 2);
回复

使用道具 举报

2

主题

9

回帖

15

积分

新手上路

积分
15
 楼主| 发表于 2020-6-13 01:34:52 | 显示全部楼层
桌面回调函数:

static void _cbBkWindow(WM_MESSAGE * pMsg)
{
static uint32_t  tStart, tEnd;
int NCode, Id;
        switch (pMsg->MsgId)
        {
               

                /* 重绘消息*/
        case WM_PAINT:
               
                GUI_MEMDEV_WriteAt(hMempic, 0, 0);

                               
               
               
                break;

                case WM_NOTIFY_PARENT:
                Id = WM_GetId(pMsg->hWinSrc);
                NCode = pMsg->Data.v;
                switch (Id)
                {
                        /* 第一个界面上的图标 */
                case GUI_ID_ICONVIEW0:
                        switch (NCode)
                        {
                                /* ICON控件点击消息 */
                        case WM_NOTIFICATION_CLICKED:
                                tStart = GUI_GetTime();
                                break;

                                /* ICON控件释放消息 */
                        case WM_NOTIFICATION_RELEASED:
                                tEnd = GUI_GetTime() - tStart;
                                if (tEnd > 800)
                                {
                                        WM_SetFocus(WM_HBKWIN);
                                        break;
                                }
                                _apModules0[ICONVIEW_GetSel(pMsg->hWinSrc)](WM_HBKWIN);
                                break;
                        }

                        break;

       
                }
               
               
                break;
        default:
                WM_DefaultProc(pMsg);
                break;
        }
}
回复

使用道具 举报

2

主题

9

回帖

15

积分

新手上路

积分
15
 楼主| 发表于 2020-6-13 01:36:07 | 显示全部楼层
按键消息中 关闭窗口 GUI_EndDialog
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115787
QQ
发表于 2020-6-13 10:52:03 | 显示全部楼层
方便的话,直接模拟器上走一个,我测测看。
回复

使用道具 举报

2

主题

9

回帖

15

积分

新手上路

积分
15
 楼主| 发表于 2020-6-14 21:57:46 | 显示全部楼层
eric2013 发表于 2020-6-13 10:52
方便的话,直接模拟器上走一个,我测测看。

模拟器上面是正常的,我在单片机上跑有这个情况,我自己找到问题了,发现创建桌面窗口时内存设备创建的,返回的句柄失败了。以前在模拟器上测试的创建jpg的工程。移植到单片机上也是失败的。。。可能就是这个问题。现在还在找存储设备创建失败的问题。。。用的官方demo创建线条之类的没问题,就只有图片有问题好像。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-5-19 02:38 , Processed in 0.398611 second(s), 27 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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