硬汉嵌入式论坛

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

[emWin] 鼠标移动之后背景不填充了怎么办

[复制链接]

1

主题

1

回帖

1

积分

新手上路

积分
1
发表于 2017-2-9 11:56:42 | 显示全部楼层 |阅读模式
[paragraph]
昨天在论坛上解决了EdIt反显的问题,确实是读点部分没有弄好,将程序改过之后,反显问题解决了,但是鼠标拖动之后,原来的位置没有填充背景色。不显示鼠标就没有问题。这是怎么回事,求大神帮忙分析分析。效果如图。
  1. /*********************************************************************
  2. *
  3. *       _FillRect
  4. */
  5. static void _FillRect(GUI_DEVICE * pDevice, int x0, int y0, int x1, int y1) {
  6.     //之前的程序
  7. //    LCD_Fill(x0,y0,x1,y1,LCD_COLORINDEX);
  8.     //改后的程序
  9.      int x;
  10.     if (GUI_pContext->DrawMode & LCD_DRAWMODE_XOR) {
  11.         for (; y0 <= y1; y0++) {
  12.             for (x = x0; x <= x1; x++) {
  13.                 _XorPixel(pDevice, x, y0);
  14.             }
  15.         }
  16.     }
  17.     else {
  18.         LCD_Fill(x0,y0,x1,y1,LCD_COLORINDEX);
  19.     }
  20. }
复制代码
回复

使用道具 举报

17

主题

121

回帖

172

积分

初级会员

积分
172
发表于 2017-2-9 13:33:24 | 显示全部楼层
有没有为窗口设置回调函数?
回复

使用道具 举报

1

主题

1

回帖

1

积分

新手上路

积分
1
 楼主| 发表于 2017-2-9 18:31:41 | 显示全部楼层
有回调函数
  1. static void _cbInputWindow(WM_MESSAGE * pMsg)
  2. {
  3.     int     NCode;
  4.     int     Id;
  5.    
  6.     switch (pMsg->MsgId) {
  7.         case WM_INIT_DIALOG:
  8.             Input_Window_Init(pMsg);
  9.             break;
  10.         case WM_KEY:
  11.             switch (((WM_KEY_INFO*)(pMsg->Data.p))->Key) {
  12.                 case GUI_KEY_ESCAPE:
  13.                     GUI_EndDialog(pMsg->hWin, 1);
  14.                     break;
  15.                 case GUI_KEY_ENTER:
  16.                     GUI_EndDialog(pMsg->hWin, 0);
  17.                     break;
  18.             }
  19.             break;
  20.         case WM_NOTIFY_PARENT:
  21.             Id    = WM_GetId(pMsg->hWinSrc);
  22.             NCode = pMsg->Data.v;
  23.             switch(Id) {
  24.                 case ID_BUTTON_0:    //按键0-9
  25.                 case ID_BUTTON_1:
  26.                 case ID_BUTTON_2:
  27.                 case ID_BUTTON_3:
  28.                 case ID_BUTTON_4:
  29.                 case ID_BUTTON_5:
  30.                 case ID_BUTTON_6:
  31.                 case ID_BUTTON_7:
  32.                 case ID_BUTTON_8:
  33.                 case ID_BUTTON_9:
  34.                 case ID_BUTTON_10:    //按键'.'
  35.                     switch(NCode) {
  36.                         case WM_NOTIFICATION_CLICKED:
  37.                             break;
  38.                         case WM_NOTIFICATION_RELEASED:
  39.                             Input_Window_Number_Button_Handle(pMsg);
  40.                             break;
  41.                     }
  42.                     break;
  43.                 case ID_BUTTON_11: // Notifications sent by 'DEL'
  44.                     switch(NCode) {
  45.                         case WM_NOTIFICATION_CLICKED:
  46.                             break;
  47.                         case WM_NOTIFICATION_RELEASED:
  48.                             Input_Window_DEL_Button_Handle(pMsg);
  49.                             break;
  50.                     }
  51.                     break;
  52.                 case ID_BUTTON_12: // Notifications sent by 'Finish'
  53.                     switch(NCode) {
  54.                         case WM_NOTIFICATION_CLICKED:
  55.                             break;
  56.                         case WM_NOTIFICATION_RELEASED:
  57.                             Input_Window_Finish_Button_Handle(pMsg);
  58.                             break;
  59.                     }
  60.                     break;
  61.                 case ID_BUTTON_13: // Notifications sent by 'Cancle'
  62.                     switch(NCode) {
  63.                         case WM_NOTIFICATION_CLICKED:
  64.                             break;
  65.                         case WM_NOTIFICATION_RELEASED:
  66.                             Input_Window_Cancle_Button_Handle(pMsg);
  67.                             break;
  68.                     }
  69.                     break;
  70.                 case ID_EDIT_0: // Notifications sent by 'Edit'
  71.                     switch(NCode) {
  72.                         case WM_NOTIFICATION_CLICKED:
  73.                             break;
  74.                         case WM_NOTIFICATION_RELEASED:
  75.                             break;
  76.                         case WM_NOTIFICATION_VALUE_CHANGED:
  77.                             break;
  78.                     }
  79.                     break;
  80.             }
  81.             break;
  82.         default:
  83.             WM_DefaultProc(pMsg);
  84.             break;
  85.     }
  86. }
复制代码
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115728
QQ
发表于 2017-2-9 18:41:49 | 显示全部楼层
游标拖影的话,以下三种情况都会有这种现象。
1.  底层的读像素函数,你可以将其修改为连续读取2-3次,2次和3此都试试
2. 有些显示屏读取出来的是BGR格式的,需要做个转换
3. 如果你用的是FSMC接口的话,降低FSMC的速度看看,就是把那几个参数值修改稍大些。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-5-14 20:19 , Processed in 0.238457 second(s), 30 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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