EMWIN

文章目录

  • EMWIN
  • 前言
  • 一、 EDIT 控件简介
  • 二、通知代码
  • 三、键盘反应
  • 四、 EDIT 控件 API 函数
  • 五、EDIT 控件演示例程
  • 总结

前言

EDIT 控件通常用来作为输入文本的主要用户界面,也可使用编辑字段以二进制、十进制或十六进制模式输入值。

一、 EDIT 控件简介

如下图

二、通知代码

列举出了 EDIT 小工具作为 WM_NOTIFY_PARENT 消息的一部分发送给其父窗口的消息类型:

WM_NOTIFICATION_CLICKED 已单击小工具。
WM_NOTIFICATION_RELEASED 已释放小工具。
WM_NOTIFICATION_MOVED_OUT已单击小工具,并且指针已移出小工具,但没有释放。
WM_NOTIFICATION_VALUE_CHANGED 编辑小工具的值(内容)已更改

三、键盘反应

如果小工具具有输入焦点,则它将对下列各键做出反应:

GUI_KEY_UP上升当前字符。例如,如果当前字符(光标下的字符)为“A”,则变为“B”
GUI_KEY_DOWN 下降当前字符。例如,如果当前字符为为“B”,则变为“A”
GUI_KEY_RIGHT 将光标向右移动一个字符。
GUI_KEY_LEFT 将光标向左移动一个字符。
GUI_KEY_BACKSPACE 如果小工具在文本模式下操作,则删除光标前的字符。
GUI_KEY_DELETE 如果小工具在文本模式下操作,则删除当前字符。
GUI_KEY_INSERT如果小工具在文本模式下操作,则此键在GUI_EDIT_MODE_OVERWRITE

四、 EDIT 控件 API 函数

EDIT_AddKey() 按键输入例程。
EDIT_Create() 创建 EDIT 小工具。
EDIT_CreateAsChild() 创建 EDIT 小工具,作为子窗口。
EDIT_CreateEx() 创建 EDIT 小工具。
EDIT_CreateIndirect() 从资源表项创建 EDIT 小工具。
EDIT_CreateUser() 使用额外字节作为用户数据创建 EDIT 小工具。
EDIT_EnaBleBlink() 启用/禁用闪烁光标
EDIT_GetCursorCharPos() 返回光标位置的字符编号。
EDIT_GetCursorPixelPos() 返回光标的像素位置。
EDIT_GetDefaultBkColor() 返回默认背景颜色。
EDIT_GetDefaultFont() 返回默认的字体。
EDIT_GetDefaultTextAlign() 返回默认的文本对齐方式。
EDIT_GetDefaultTextColor() 返回默认文本颜色。
EDIT_GetFloatValue() 按浮点值返回当前值。
EDIT_GetNumChars() 返回给定编辑小工具的字符数。
EDIT_GetText() 获取用户输入。
EDIT_GetUserData() 检索用 EDIT_SetUserData()设置的数据。
EDIT_GetValue() 返回当前值。
EDIT_SetBinMode() 启用二进制编辑模式。
EDIT_SetBkColor() 设置编辑字段的背景色。
EDIT_SetCursorAtChar() 将编辑小工具光标设置到指定的字符位置。
EDIT_SetCursorAtPixel() 将编辑小工具光标设置到指定的像素位置。
EDIT_SetDecMode() 启用十进制编辑模式。
EDIT_SetDefaultBkColor() 设置默认背景色。
EDIT_SetDefaultFont() 设置用于编辑字段的默认字体。
EDIT_SetDefaultTextAlign() 设置编辑字段的默认文本对齐方式。
EDIT_SetDefaultTextColor() 设置默认文本颜色。
EDIT_SetFloatMode() 启用浮点编辑模式。
EDIT_SetFloatValue() 设置使用浮点编辑模式时的浮点值。
EDIT_SetFont() 选择文本的字体。
EDIT_SetHexMode() 启用十六进制编辑模式。
EDIT_SetInsertMode() 启用或禁用插入模式。
EDIT_SetMaxLen() 设置编辑字段的最大字符数。
EDIT_SetpfAddKeyEx() 设置添加字符时要调用的函数。
EDIT_SetSel() 设置当前选定内容。
EDIT_SetText() 设置文本。
EDIT_SetTextAlign() 设置编辑字段的文本对齐方式。
EDIT_SetTextColor() 设置文本的颜色。
EDIT_SetTextMode() 将小工具的编辑模式设置回文本模式。
EDIT_SetValue() 设置当前值。
EDIT_SetUlongMode() 启用不带符号的长十进制编辑模式。
EDIT_SetUserData() 设置 EDIT 小工具的额外数据。
GUI_EditBin() 编辑当前光标位置处的二进制值。
GUI_EditDec() 编辑当前光标位置处的十进制值。
GUI_EditHex() 编辑当前光标位置处的十六进制值。
GUI_EditString() 编辑当前光标位置处的字符串。

五、EDIT 控件演示例程

#include "editwinmode.h"
#include "GUI.h"
#include "WM.h"
#include "DIALOG.h"#define WM_APP_SHOW_TEXT   (WM_USER +0)
#define TEXT_MAXLEN 40WM_HWIN DialoghWin;//¶Ô»°¿ò×ÊÔ´±í
static const GUI_WIDGET_CREATE_INFO _aDialogCreate[] =
{{ FRAMEWIN_CreateIndirect, "Framewin", 0, 55, 90, 200, 110, FRAMEWIN_CF_MOVEABLE},{ EDIT_CreateIndirect, "Edit", GUI_ID_EDIT0, 24, 10, 145, 25, 0,15},{ BUTTON_CreateIndirect,"Ok", GUI_ID_OK,65,    50, 70, 30}
};//±³¾°´°¿ÚµÄ»Øµ÷º¯Êý
static void _BkCallback(WM_MESSAGE *pMsg)
{static WM_HWIN hWin;static WM_HWIN hEdit;static U8 text;char   buffer[TEXT_MAXLEN];switch(pMsg->MsgId){case WM_PAINT:GUI_SetBkColor(GUI_DARKGRAY);GUI_Clear();GUI_SetFont(&GUI_Font24_ASCII);GUI_DispStringHCenterAt("WIDGET_Edit - Sample", 160, 5);GUI_SetFont(&GUI_Font8x16);if (text) {hEdit=WM_GetDialogItem(DialoghWin,GUI_ID_EDIT0);/*¶ÁȡС¹¤¾ßµÄÈÎÎñ¾ä±ú*/GUI_DispStringHCenterAt("The string you have modified is:", 160, 90);EDIT_GetText(hEdit, buffer, TEXT_MAXLEN);GUI_DispStringHCenterAt(buffer, 160, 110);} else{ GUI_DispStringHCenterAt("Use keyboard to modify string...", 160, 90);}break;  case WM_APP_SHOW_TEXT:/*µ±Ïò EDIT ¿Ø¼þÊäÈëÍê³É²¢ÇÒµã»÷¶Ô»°¿òÖеġ°OK¡±°´Å¥ÒÔºó¾Í»áÏò±³¾°´°¿Ú WM_HBKWIN ·¢ËÍÏûÏ¢ WM_APP_SHOW_TEXT£¬*/hWin=pMsg->hWinSrc;WM_HideWindow(hWin); //Òþ²Ø¶Ô»°¿òtext=1;WM_InvalidateWindow(WM_HBKWIN); //±³¾°´°¿ÚÎÞЧWM_CreateTimer(WM_HBKWIN,0,3000,0);break;case WM_TIMER:text=0;WM_InvalidateWindow(WM_HBKWIN);WM_ShowWindow(hWin);break;default:WM_DefaultProc(pMsg);break;}
}//¶Ô»°¿ò»Øµ÷º¯Êý
static void _cbDialog(WM_MESSAGE * pMsg)
{WM_HWIN hItem;int     NCode;int     Id;WM_MESSAGE Msg;switch (pMsg->MsgId) {case WM_INIT_DIALOG:/*´´½¨¶Ô»°¿òºóÁ¢¼´·¢Ë͵½¶Ô»°¿ò´°¿Ú*///³õʼ»¯FRAMEWINhItem = pMsg->hWin;FRAMEWIN_SetText(hItem, "EDIT USER");FRAMEWIN_SetTextAlign(hItem, GUI_TA_HCENTER | GUI_TA_VCENTER);FRAMEWIN_SetFont(hItem, GUI_FONT_16B_ASCII);//³õʼ»¯EDIThItem = WM_GetDialogItem(pMsg->hWin, GUI_ID_EDIT0);EDIT_EnableBlink(hItem, 500, 1);/*ÆôÓÃ/½ûÓÃÉÁ˸¹â±ê*/EDIT_SetText(hItem, "qichenxi");EDIT_SetFont(hItem, &GUI_Font20_ASCII);EDIT_SetTextAlign(hItem, GUI_TA_LEFT | GUI_TA_VCENTER);break;case WM_NOTIFY_PARENT:/*¸æÖª¸¸´°¿Ú£¬Æä×Ó´°¿ÚÖз¢ÉúÁËijЩ¸Ä±ä*/Id    = WM_GetId(pMsg->hWinSrc);NCode = pMsg->Data.v;switch(Id) {case GUI_ID_EDIT0: //EDIT¿Ø¼þ֪ͨÏûÏ¢switch(NCode) {case WM_NOTIFICATION_CLICKED:break;case WM_NOTIFICATION_RELEASED:break;case WM_NOTIFICATION_VALUE_CHANGED:break;}break;case GUI_ID_OK:switch(NCode){case WM_NOTIFICATION_CLICKED:break;                        case WM_NOTIFICATION_RELEASED:Msg.MsgId=WM_APP_SHOW_TEXT;Msg.hWinSrc=pMsg->hWin;WM_SendMessage(WM_HBKWIN,&Msg);/*Ïò´°¿Ú·¢ËÍÏûÏ¢¡£*/break;      }       }break;default:WM_DefaultProc(pMsg);break;}
}void Editwinmode_Demo(void)
{WM_SetCallback(WM_HBKWIN,_BkCallback);DialoghWin = GUI_CreateDialogBox(_aDialogCreate, GUI_COUNTOF(_aDialogCreate), _cbDialog, WM_HBKWIN, 0, 0);while(1){GUI_Delay(10);}
}


这里我们没有做输入法,所以没办法在开发板上输入字符串,大家自行将本例程可以移植到模拟器中,在 PC 上模拟,通过键盘输入字符串,然后点击 OK 键,那么刚刚输入的字符串就会显示在背景窗口中

总结

仔细看一下代码和函数还是可以看懂的。

STM32——EMWIN EDIT 控件(十八)相关推荐

  1. MFC EDIT控件的使用记录

    mfc和qt不同,mfc没有单行edit控件,而qt有,下面我就来介绍mfc如何将edit设置为单行控件 CFont * f; f = new CFont; f->CreateFont( 50, ...

  2. c++:MFC EDIT控件内容的四种处理方式使用(CEdit控件类型与CString 值联动)

    EDIT控件的使用 1.UpdateData()函数 2.获取控件内容 ①句柄操作 ②变量操作 1.UpdateData()函数 //UpdateData(FALSE); //将变量的值,输出到与其关 ...

  3. C++ 一个程序获取另一个程序Edit控件的内容

    转载地址:https://www.cnblogs.com/lujin49/p/4796502.html //一个程序获取另一个程序Edit控件的内容 //根据指定程序的标题名获取改程序窗口的句柄 HW ...

  4. 使用Rich Edit控件

    VC中在对话框上使用Rich Edit控件前一定要用AfxInitRichEdit()初始化RichEd... 1.设置edit只读属性 方法一:                 m_edit1.Se ...

  5. java用gui如何写退格_emWin(ucGui)的Edit控件退格处理方法 worldsing

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

  6. MFC中通过SendMessage修改Edit控件的文本

    通过Windows API可以方便地实现. 3步走: HWND hWnd = ::FindWindow(NULL,"showPicture"); HWND hEdit = ::Ge ...

  7. EDIT控件只读模式及实践问题

    EDIT控件实现只读模式 先说三种使EDIT控件实现只读模式的简单方式,然后由于这三种方式不能满足要求,最后又引出两种稍复杂的方式.这三种简单方式如下: 1.设置EDIT控件窗口风格,使窗口风格中含有 ...

  8. Windows edit控件(编辑框控件)

    在C语言控制台程序(Console Application)中,可以使用 scanf 函数获取用户的输入,而在Windows程序中使用编辑框控件. 创建编辑框控件 编辑框控件的窗口类名是 edit . ...

  9. MFC中的edit控件

    edit control 编辑框 static control 静态文本框控件 Button 按钮控件 第一步,在VS2019中新建一个MFC项目: 第二步,打开资源视图,双击打开窗口,在工具栏中选择 ...

最新文章

  1. c++输出的值精确到小数点后5位_C的探查之路05-基本类型
  2. Java并发编程之ConcurrentHashMap
  3. java做 excel文件的 导入导出 (SSM+layer)
  4. 【网络编程】之十、重叠IO Overlapped IO
  5. java解压中文乱码_java使用解压zip文件,文件名乱码解决方案
  6. tomcat server.xml详细配置
  7. 统计学习方法十:隐马尔科夫模型
  8. r5驱动 索尼exmor_索尼Exmor APS HD CMOS弱光测试
  9. c4d渲染测试软件,C4D常用的4大主流渲染器
  10. 大时代,小过客——《激荡三十年》优秀读后感范文4600字
  11. C# 导出 EXecl ,导出word,word转PDF
  12. 通俗易懂的YOLO系列(从V1到V5)模型解读!
  13. C 结构体 struct 详解
  14. 高性能数据库引擎 CoolHash 产品宣言 Fourinone4.0版新特性(转)
  15. 1011 A+B 和 C (15分) C语言实现
  16. 记红辣椒苹果审核旅程
  17. java计算机毕业设计智能导诊系统源码+mysql数据库+系统+部署+lw文档
  18. 快速了解统计学之辛普森悖论
  19. 多个excel数据汇总
  20. java metronic_基于BootStrap Metronic开发框架经验小结【一】框架总览及菜单模块的处理...

热门文章

  1. ​C语言指针:输出月份英文名 (15 分)本题要求实现函数,可以返回一个给定月份的英文名称。函数接口定义:char *getmonth( int n );
  2. Shell脚本中各种符号的意思
  3. 自动增强-AutoAugment: Learning Augmentation Strategies from Data
  4. 谷粒商城BUG P52新建二级目录中新建三级目录无法显示bug解决
  5. python+selenium浏览器驱动(chrome,Firefox,IE)下载与封装
  6. 2023需求最大的8种编程语言排名
  7. 学技术总是浮躁不安,最近想看看佛经名句,使内心稍许安定
  8. html单元格文字顶格左对齐,word表格如何顶格输入
  9. 解决方案:Win10和Linux双系统配对蓝牙设备
  10. 用python来解 PAT 1060爱丁顿数-25-满分无超时