硬汉嵌入式论坛

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

[emWin] 关于WM_SetCreateFlags(WM_CF_MEMDEV)使用问题

[复制链接]

6

主题

12

回帖

30

积分

新手上路

积分
30
发表于 2019-10-12 11:51:50 | 显示全部楼层 |阅读模式
标志WM_CF_MEMDEV是启用所有窗口的内存设备,我是在GUI_Init()之前创建的。
去年写的程序,今年换了一个厂家的显示屏之后,只是LCD驱动改了,不过改动不算大,其它地方都没改。
但是现在我一启用WM_SetCreateFlags(WM_CF_MEMDEV),就一直显示黑屏,但是其它功能是正常的,也就是触摸之类的,还有原本的功能也在,就只是黑屏。
有没有哪位大佬能够指点一下,谢谢!

void MainTask(void)
{
INT8U  ucParam;
INT8U  ucKey;
long long sd_size;

WM_SetCreateFlags(WM_CF_MEMDEV);

    GUI_Init();
   
    WM_MULTIBUF_Enable(1);
BUTTON_SetReactOnLevel();
   
// CreateStart();
    CreateDesktop();
    CreateStateWin();
   
    f_mkdir("0:/APP");
    f_mkdir("0:/SCENE");
    f_mkdir("0:/CODE");
    f_mkdir("0:/CODE/DSP_HEX");
    f_mkdir("0:/CODE/MAIN_HEX");
   
    if (GbUSBFlg)
    {
        if (!SD_Initialize())
        {
            Mass_Memory_Size[0] = (long long)SD_GetSectorCount()*512;
            Mass_Block_Size[0] = 512;
            Mass_Block_Count[0] = Mass_Memory_Size[0]/Mass_Block_Size[0];
            GbUSBFlg = 0;
        }
        USB_Port_Set(0);
        delay_ms(300);
        USB_Port_Set(1);
        Data_Buffer = mymalloc(BULK_MAX_PACKET_SIZE*2*4);
        Bulk_Data_Buff = mymalloc(BULK_MAX_PACKET_SIZE);
        USB_Interrupts_Config();
        Set_USBClock();
        USB_Init();
    }
   
    if (!P1_DefaultSkinENA)
    {
        BUTTON_SetDefaultSkinClassic();
        WIDGET_SetDefaultEffect(&WIDGET_Effect_3D);
    }
    else
    {
        BUTTON_SKINFLEX_PROPS Props;
        BUTTON_GetSkinFlexProps(&Props, BUTTON_SKINFLEX_PI_ENABLED);
        Props.Radius = 4;
        Props.aColorUpper[0] = GUI_WHITE;
  Props.aColorFrame[0] = GUI_BLUE;
  Props.aColorLower[0] = GUI_LIGHTGRAY;
        Props.aColorUpper[1] = GUI_LIGHTGRAY;
  Props.aColorLower[1] = GUI_LIGHTGRAY;
  Props.aColorFrame[1] = GUI_LIGHTGRAY;
  Props.aColorFrame[2] = GUI_LIGHTGRAY;
        BUTTON_SetSkinFlexProps(&Props, BUTTON_SKINFLEX_PI_ENABLED);
        
        /*aColorFrame[3]*/
        //[0]-圆角边框的外部颜色
        //[1]-圆角边框的内部颜色
        //[2]-框架与内部区域之间的颜色
        /*aColorUpper*/
        //[0]-上层渐变的第一种(上层)颜色
        //[1]-上层渐变的第二种(下层)颜色
        /*aColorLower*/
        //[0]-下层渐变的第一种(上层)颜色
        //[1]-下层渐变的第二种(下层)颜色
        /*Radius    圆角的半径*/
        BUTTON_GetSkinFlexProps(&Props, BUTTON_SKINFLEX_PI_FOCUSSED);        //  定义已聚焦状态所使用的默认皮肤属性
  Props.Radius = 4;
  Props.aColorUpper[0] = GUI_WHITE;
  Props.aColorFrame[0] = GUI_DARKGRAY;
  Props.aColorLower[0] = GUI_LIGHTBLUE;
        Props.aColorUpper[1] = GUI_LIGHTBLUE;
  Props.aColorLower[1] = GUI_LIGHTBLUE;
  Props.aColorFrame[1] = GUI_LIGHTBLUE;
  Props.aColorFrame[2] = GUI_LIGHTBLUE;
  BUTTON_SetSkinFlexProps(&Props, BUTTON_SKINFLEX_PI_FOCUSSED);
  BUTTON_GetSkinFlexProps(&Props, BUTTON_SKINFLEX_PI_PRESSED);         //  定义已按下状态所使用的默认皮肤属性
  Props.Radius = 4;
  Props.aColorUpper[0] = GUI_WHITE;
  Props.aColorFrame[0] = GUI_LIGHTBLUE;
  Props.aColorLower[0] = GUI_LIGHTBLUE;
        Props.aColorUpper[1] = GUI_LIGHTBLUE;
  Props.aColorLower[1] = GUI_LIGHTBLUE;
  Props.aColorFrame[1] = GUI_LIGHTBLUE;
  Props.aColorFrame[2] = GUI_LIGHTBLUE;
  BUTTON_SetSkinFlexProps(&Props, BUTTON_SKINFLEX_PI_PRESSED);
    }

    while(1)
    {
        GUI_Exec();
    }
}

回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115787
QQ
发表于 2019-10-12 12:50:59 | 显示全部楼层
QQ截图20191012125053.jpg
回复

使用道具 举报

6

主题

12

回帖

30

积分

新手上路

积分
30
 楼主| 发表于 2019-10-12 14:14:40 | 显示全部楼层

不行喔,只有注释掉WM_SetCreateFlags(WM_CF_MEMDEV)的时候,显示屏才能显示,但是显示不正常,有闪屏现象,ICON图标还有锯齿,使用的WM_GetClientRectEx(hWin, &Rect); GUI_DrawGradientV(Rect.x0, Rect.y0, Rect.x1, Rect.y1, GUI_LIGHTCYAN, GUI_CYAN);背景渐变效果也没有。
回复

使用道具 举报

6

主题

12

回帖

30

积分

新手上路

积分
30
 楼主| 发表于 2019-10-12 14:19:07 | 显示全部楼层
本帖最后由 哈? 于 2019-10-12 14:45 编辑

我觉得应该是LCD驱动问题,因为相同的一个工程文件,我只修改了lcd.c。使用前一款显示屏的就能够正常显示,也就是没改动之前的。后面更换了显示屏,修改了lcd.c之后,只要开启了WM_SetCreateFlags(WM_CF_MEMDEV)就黑屏,其它功能可用。但是我使用EMWIN教程中的触摸参数获取用例就能够正常显示。
回复

使用道具 举报

16

主题

31

回帖

79

积分

初级会员

积分
79
发表于 2019-10-12 15:29:19 | 显示全部楼层

也就是说若使用3缓冲,则用WM_MULtiBUF_Enable(1);
若用2缓冲,则WM_SetCreateFlags(WM_CF_MEMDEV)即可,WM_MULtiBUF_Enable(1)也可以。

这么理解是否正确?  
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-5-18 13:01 , Processed in 0.581817 second(s), 27 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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