emWin(ucGui)的Edit控件退格处理方法 worldsing

在enWin(ucGui)中EDIT控件在数值模式(十进制/十六进制/二进制/浮点数)下编辑是,无法使用BackSpace键进行退格,主要涉及到的函数有:

EDIT_SetBinMode()

EDIT_SetDecMode()

EDIT_SetHexMode()

EDIT_SetFloatMode()

?

将Edit控件一旦使用此类的模式是将无法BackSpace键进行退格删除,解决办法如下,响应Edit控件的按键消息,当收到BackSpace键时强制将光标退到上一个字符,那么就使用到接口函数即:获取当前的字符光标位置和设置指定字符位置光标。

EDIT_GetCursorCharPos()

EDIT_SetCursorAtChar()

?

代码:

/*********************************************************************

* cbEdit 编辑控件回调

*/

static
void
cbEdit(WM_MESSAGE * pMsg) {

????switch (pMsg->MsgId) {

????case
WM_KEY:

????????switch (((WM_KEY_INFO *)(pMsg->Data.p))->Key){

????????case
GUI_KEY_ENTER:

????????????price = EDIT_GetFloatValue(widgetsItemBuf[0]);

????????????WM_SetFocus(widgetsItemBuf[1]);????

????????????return;

????????case
GUI_KEY_BACKSPACE:

????????????if(((WM_KEY_INFO *)(pMsg->Data.p))->PressedCnt == 0)

????????????EDIT_SetCursorAtChar(widgetsItemBuf[0],EDIT_GetCursorCharPos(widgetsItemBuf[0]) - 1);

????????????break;

????????}

????break;

????}

????EDIT_Callback(pMsg);

}

?

运行效果:

时间: 2024-10-09 23:48:06

emWin(ucGui)的Edit控件退格处理方法 worldsing的相关文章

emWin(ucGui) Edit控件数值模式 ——符号编辑 worldsing

emWin(ucGui) Edit控件数值模式出现负数值编辑时,如果键盘按键全可以设置独立的"-","+"键,这样可以正常编辑正数和负数,但是要没有设置这两个键,编辑Edit的数值会比较麻烦,可以使用"上"键和"下"键修改符号,但是光标无法移动到后面的数值位,必须借助"左"键和"右"键来移动光标,在嵌入式里的按键比较有限制,如果不单独设立"+","+&quo

WPF:获取DataGrid控件单元格DataGridCell

转载:http://blog.csdn.net/jhqin/article/details/7645357 /* ---------------------------------------------------------- 文件名称:DataGridPlus.cs 作者:秦建辉 MSN:[email protected] QQ:36748897 博客:http://blog.csdn.net/jhqin 开发环境: Visual Studio V2010 .NET Framework 4

WIN32窗口子类化----自定义Edit控件的右键菜单

前言 Win32应用程序中,子控件的消息都是分发到其父窗口的消息处理函数中去了,这对于我们需要自定义子控件的某些特性时时十分不方便的,还好,Windows为我们提供了控件子类化的相关接口API.核心的思想是:通过获取子控件的消息处理函数地址,设置子控件的消息处理函数到自己定义的函数里,也就是Get/SetWindowLong API的使用. 测试代码 这里是一个简单的测试程序,在控制台程序中创建一个对话框,然后对话框上有一个EDIT控件(资源编辑器里拖入的,不多说),子类化EDIT控件,右键弹出

delphi Components[i]清除所有edit控件中的内容

(* 一般的清空combobox方法 combobox1.clear; ... combobox9.clear; *) procedure TForm1.Button1Click(Sender: TObject); var i: integer; begin for i:=0 to self.ComponentCount-1 do begin if self.Components[i] is TCombobox then TCombobox(self.Components[i]).clear;

spin constrol与edit 控件共用

第一步:创建一个spin control,属性 Set Buddy Integer 设为 True,绑定控件为m_spinPollingTime 创建一个edit control,ID为IDC_EDIT_POLLING_TIME, 属性改为只是数字与不可修改, 绑定值为 m_nPollingTime 第二步:在对话框的初始化函数OnInitDialog()里添加 m_spinPollingTime.SetBuddy(GetDlgItem(IDC_EDIT_POLLING_TIME)); // 关

关于Edit控件focused状态,调用自己编写的键盘

一.涉及编写自己的自己的键盘 由于只使用英文字母跟数字等简单的字符而已,没有包括全角或者中文字符.所以直接使用跟手机的输入密码键盘一样的键盘即可. 遇到的问题:1.使用法keybd_event()的方式进行发送消息,不管发送大小写字母都是显示小写字母 2.键盘不能有焦点状态,否则使用的keybd_event则无法将字符发送给edit框.如果使用有焦点的状态则会导致edit控件跟我自己编写的键盘耦合性太大. 3.由于使用duilib的tilelayout而出现键盘的所有按键无法正常对齐. 解决方案

Iocomp控件教程之Analog Display—模拟显示控件(优于EDIT控件)

Analog Display是简洁的显示控件.用于显示指定准确度和单位的模拟值(实数),能够将准确度设置为0.使显示结果为整数. 第一步:建立MFC对话框 第二步:插入AnalogDisplay控件 watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" > watermark/2/text/aHR0cDovL

修改Delphi 10.1.2 edit控件在android的复制、剪切和粘贴样式

Delphi 10.1.2 edit控件在android默认的复制.剪切和粘贴样式太丑,经悟能-DelphiTeacher的提示,用最简单的代码修改后稍有改观. 默认的样式: 修改后的样式: 修改FMX.Platform.Android.pas 找到procedure TWindowManager.ShowContextMenu(const ItemsToShow: TContextMenuItems),按下面的红字增加Copy.cut和Paste button的setBackgroundCol

自定义Edit控件控制输入范围

1 //自定义Edit,实现十六进制输入控制,使用OnChar()函数实现 2 //MyEdit.h 3 #pragma once 4 5 class CMyEdit : public CEdit { 6 DECLARE_DYNAMIC(CMyEdit) -----------------------① 7 8 public: 9 CMyEdit(){}; 10 protected: 11 DECLARE_MESSAGE_MAP() ----------------------------② 1