硬汉嵌入式论坛

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

[emWin] 请问EDIT的光标问题,求解答

[复制链接]

1

主题

1

回帖

4

积分

新手上路

积分
4
发表于 2023-7-8 10:27:16 | 显示全部楼层 |阅读模式

为什么EDIT光标内的数字有点偏移?我开启光标闪烁之后,光标内数字有类似滚动的动作?
怎么能把光标改成竖线而不是黑框?

我触摸选中EDIT怎么能让光标始终显示在最后一位?

新人刚学,求解答

回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106913
QQ
发表于 2023-7-8 11:49:57 | 显示全部楼层
1、光标位置设置API:EDIT_SetCursorAtChar()
2、光标默认创建效果就是竖线



[C] 纯文本查看 复制代码
#include <stdlib.h>
#include "DIALOG.h"
#include "SWIPELIST.h"

/*********************************************************************
*
*       Defines
*
**********************************************************************
*/
#define ID_FRAMEWIN_0            (GUI_ID_USER + 0x00)
#define ID_EDIT_0            (GUI_ID_USER + 0x02)


// USER START (Optionally insert additional defines)
// USER END

/*********************************************************************
*
*       Static data
*
**********************************************************************
*/

// USER START (Optionally insert additional static data)
// USER END

/*********************************************************************
*
*       _aDialogCreate
*/
static const GUI_WIDGET_CREATE_INFO _aDialogCreate[] = {
  { FRAMEWIN_CreateIndirect, "Framewin", ID_FRAMEWIN_0, 0, 0, 320, 240, 0, 0x0, 0 },
  { EDIT_CreateIndirect, "Edit", ID_EDIT_0, 53, 64, 73, 22, 0, 0x64, 0 },
  // USER START (Optionally insert additional widgets)
  // USER END
};

/*********************************************************************
*
*       Static code
*
**********************************************************************
*/

// USER START (Optionally insert additional static code)
// USER END

/*********************************************************************
*
*       _cbDialog
*/
static void _cbDialog(WM_MESSAGE * pMsg) {
  WM_HWIN hItem;
  int     NCode;
  int     Id;
  // USER START (Optionally insert additional variables)
  // USER END

  switch (pMsg->MsgId) {
  case WM_INIT_DIALOG:
    //
    // Initialization of 'Edit'
    //
    hItem = WM_GetDialogItem(pMsg->hWin, ID_EDIT_0);
    EDIT_SetText(hItem, "123");
    EDIT_SetFont(hItem, GUI_FONT_24_ASCII);
	EDIT_EnableBlink(hItem, 100, 1);
    // USER START (Optionally insert additional code for further widget initialization)
    // USER END
    break;
  case WM_NOTIFY_PARENT:
    Id    = WM_GetId(pMsg->hWinSrc);
    NCode = pMsg->Data.v;
    switch(Id) {
    case ID_EDIT_0: // Notifications sent by 'Edit'
      switch(NCode) {
      case WM_NOTIFICATION_CLICKED:
        // USER START (Optionally insert code for reacting on notification message)
        // USER END
        break;
      case WM_NOTIFICATION_RELEASED:
        // USER START (Optionally insert code for reacting on notification message)
        // USER END
        break;
      case WM_NOTIFICATION_VALUE_CHANGED:
        // USER START (Optionally insert code for reacting on notification message)
        // USER END
        break;
      // USER START (Optionally insert additional code for further notification handling)
      // USER END
      }
      break;
    // USER START (Optionally insert additional code for further Ids)
    // USER END
    }
    break;
  // USER START (Optionally insert additional message handling)
  // USER END
  default:
    WM_DefaultProc(pMsg);
    break;
  }
}

/*********************************************************************
*
*       Public code
*
**********************************************************************
*/
/*********************************************************************
*
*       CreateFramewin
*/
WM_HWIN CreateFramewin(void);
WM_HWIN CreateFramewin(void) {
  WM_HWIN hWin;

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

/*********************************************************************
*
*       MainTask
*/
void MainTask(void) {
  WM_HWIN _hSwipelist;
  WM_HWIN hWin;
  int     xSize;
  int     ySize;
  int     xPos;
  int     yPos;
  int     i;

  WM_SetCreateFlags(WM_CF_MEMDEV);

  GUI_Init();

  CreateFramewin();
  //
  // Stay alive loop
  //
  while (1) {
 
    GUI_Delay(50);
  }
}


1.png
回复

使用道具 举报

1

主题

1

回帖

4

积分

新手上路

积分
4
 楼主| 发表于 2023-7-8 14:23:29 | 显示全部楼层
eric2013 发表于 2023-7-8 11:49
1、光标位置设置API:EDIT_SetCursorAtChar()
2、光标默认创建效果就是竖线

首先,感谢!
另外,我使用EDIT_SetCursorAtChar()只有刚进入的时候在最后,之后触摸点击还是可以选到其他的位置。
还有,我文本显示用的API是EDIT_SetDecMode(),创建出来的光标就是黑方框;因为这个页面本意是想设置时间,我如果用EDIT_SetText()显示时间,那它显示的数据是不可变的;用EDIT_SetTextMode()设置为文本模式的话,它又会把EDIT清空
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106913
QQ
发表于 2023-7-9 08:13:17 | 显示全部楼层
lxdd 发表于 2023-7-8 14:23
首先,感谢!
另外,我使用EDIT_SetCursorAtChar()只有刚进入的时候在最后,之后触摸点击还是可以选到其 ...

1、是这样的,这个是可以动态设置的。
2、EDIT_SetText()配合sprintf一起使用。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-9 22:59 , Processed in 0.271736 second(s), 29 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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