硬汉嵌入式论坛

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

[emWin] emWin在模拟器用WM_CreateWindowAsChild创建的窗口里面都带有一条横线,请问这种情况是怎么回事呢?

[复制链接]

9

主题

50

回帖

77

积分

初级会员

积分
77
发表于 2021-8-30 10:07:50 | 显示全部楼层 |阅读模式
emwin_line.png


#include "DIALOG.h"

#define ID_WINDOW_0    (GUI_ID_USER + 0x07)
#define ID_WINDOW_1    (GUI_ID_USER + 0x08)

#define TEXT_X_SIZE    200
#define TEXT_Y_SIZE    45

#define X_LCD_SIZE     800
#define Y_LCD_SIZE     480

#define TEXT_X_POS     ((X_LCD_SIZE-TEXT_X_SIZE)/2)
#define TEXT_Y_POS     ((Y_LCD_SIZE-TEXT_Y_SIZE)/2+150)


#define MAG          3


static const GUI_WIDGET_CREATE_INFO _aDialogCreate[] = {
  { WINDOW_CreateIndirect, "App_Startup", ID_WINDOW_0, 8, 80, X_LCD_SIZE-16, Y_LCD_SIZE-88, 0, 0x0, 0 },

};


extern GUI_CONST_STORAGE GUI_BITMAP bmAllOptomedic;
extern GUI_CONST_STORAGE GUI_BITMAP bmbackLogoWord;
extern GUI_CONST_STORAGE GUI_BITMAP bmbackLogoColorCircle24;
extern GUI_CONST_STORAGE GUI_BITMAP bmcolortOptomedicLogo;
extern GUI_CONST_STORAGE GUI_BITMAP bmoptomedicbig;


static void _cbDialog(WM_MESSAGE * pMsg) {
  WM_HWIN hItem;
  WM_HWIN hWin;
  WM_HTIMER hTimer;

  GUI_RECT Rect;

  hWin = pMsg->hWin;
  switch (pMsg->MsgId)
  {
        case WM_INIT_DIALOG:

                WINDOW_SetBkColor(hWin, GUI_MAKE_COLOR(0x00202020));

                hTimer = WM_CreateTimer(hWin, 0, 500, 0);
                break;
        case WM_PAINT:
#if 0       
                GUI_SetColor(GUI_MAKE_COLOR(0x00202020));
                WM_GetClientRect(&Rect);
//                WM_GetWindowRect(&Rect);
                GUI_AA_FillRoundedRect(Rect.x0*3, Rect.y0*3, Rect.x1*3, Rect.y1*3, 20);
                GUI_SetColor(GUI_WHITE);
#endif
//                WM_GetClientRect(&Rect);
//                GUI_DrawGradientV(Rect.x0, Rect.y0, Rect.x1,  Rect.y1,  GUI_MAKE_COLOR(0x00202020), GUI_MAKE_COLOR(0x00202020));
                break;
         case WM_TIMER:
       
                 break;

  default:
    WM_DefaultProc(pMsg);
    break;
  }
}


static void _cbDialogPressureWin(WM_MESSAGE * pMsg)
{
     GUI_RECT pRect;
     char buf[40];

     switch (pMsg->MsgId)
     {
          case WM_TIMER:
                    WM_InvalidateWindow(pMsg->hWin);
                    WM_RestartTimer(pMsg->Data.v, 1000);
                    break;

            case WM_PAINT:

                                GUI_SetColor(GUI_MAKE_COLOR(0x002F2D2E));
                                WM_GetClientRect(&pRect);
//                                WM_GetWindowRect(&pRect);
                                GUI_AA_FillRoundedRect(pRect.x0*MAG, pRect.y0*MAG, pRect.x1*MAG, pRect.y1*MAG, 100);
                                GUI_SetColor(GUI_WHITE);

                                break;

                case WM_CREATE:
                                /* 设置抗锯齿因数 */
//                                GUI_AA_SetFactor(MAG);
//                                WM_CreateTimer(pMsg->hWin, 0, 1000, 0);                 
                                break;

                default:
                                WM_DefaultProc(pMsg);
                                break;
    }
}

static void _cbDialogFlowWin(WM_MESSAGE * pMsg)
{
     GUI_RECT pRect;
     char buf[40];

     switch (pMsg->MsgId)
     {
          case WM_TIMER:
                    WM_InvalidateWindow(pMsg->hWin);
                    WM_RestartTimer(pMsg->Data.v, 1000);
                    break;

            case WM_PAINT:

                                GUI_SetColor(GUI_MAKE_COLOR(0x002F2D2E));
                                WM_GetClientRect(&pRect);
//                                WM_GetWindowRect(&pRect);
                                GUI_AA_FillRoundedRect(pRect.x0*MAG, pRect.y0*MAG, pRect.x1*MAG, pRect.y1*MAG, 100);
                                GUI_SetColor(GUI_WHITE);

                                break;

                case WM_CREATE:
                                /* 设置抗锯齿因数 */
//                                GUI_AA_SetFactor(MAG);              
                                break;

                default:
                                WM_DefaultProc(pMsg);
                                break;
    }
}


WM_HWIN CreateApp_Startup(void)
{
  WM_HWIN hWin;

  WM_HWIN hWin1;

  hWin = GUI_CreateDialogBox(_aDialogCreate, GUI_COUNTOF(_aDialogCreate), _cbDialog, WM_HBKWIN, 0, 0);
  WM_SetHasTrans(hWin);
       

//  WM_SetCallback(hWin, _cbDialogNew);
//hWin =  WM_CreateWindowAsChild(8,
//                   50,
//                   800-20,
//                   420,
//                         WM_HBKWIN,
//                   WM_CF_SHOW | WM_CF_HASTRANS,
//                  _cbDialog,
//                  0);

#if 1
   hWin1 =  WM_CreateWindowAsChild(10,
                     10,
                     400,
                     180,
                                         hWin,
                     WM_CF_SHOW | WM_CF_HASTRANS,
                    _cbDialogPressureWin,
                    0);
   WM_SetHasTrans(hWin1);
   hWin1 =  WM_CreateWindowAsChild(10,
                     200,
                     400,
                     180,
                                         hWin,
                     WM_CF_SHOW | WM_CF_HASTRANS,
                    _cbDialogFlowWin,
                    0);
        WM_SetHasTrans(hWin1);
#endif
        return hWin;
}


回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115812
QQ
发表于 2021-8-30 11:22:23 | 显示全部楼层
测试了下正常
QQ截图20210830112206.png
回复

使用道具 举报

9

主题

50

回帖

77

积分

初级会员

积分
77
 楼主| 发表于 2021-8-30 11:31:12 | 显示全部楼层

也是模拟器测的么?不知道为啥我这显示就是有一条线,难道是模拟器的bug么
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115812
QQ
发表于 2021-8-30 14:20:56 | 显示全部楼层
EmbeddedXGJ 发表于 2021-8-30 11:31
也是模拟器测的么?不知道为啥我这显示就是有一条线,难道是模拟器的bug么

是的。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-5-21 04:44 , Processed in 0.271020 second(s), 27 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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