问题标签 [editcontrol]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1149 浏览

c++ - 更改编辑控件背景颜色的困难

我在一个对话框中有编辑控件,该对话框中的输入被检查是否有效。

如果输入无效,我应该通过更改编辑控件的背景颜色来指示有效性,否则我不应该做任何事情。

我正在检查EN_CHANGE处理程序中的输入,如果输入无效,我将编辑控件的句柄存储在向量中。最后我打电话给InvalidateRect( (HWND)lParam, NULL, TRUE );编辑控件可以用适当的颜色重新绘制。

要重绘编辑控件,我正在处理WM_CTLCOLOREDIT这样的事情:

在我启动程序编辑控件后正确绘制。

在我输入有效的条目后,编辑控件被正确绘制。

在我之后立即输入无效字符,背景会变成浅灰色,一切似乎都正常。

如果我删除无效字符,则背景保持灰色而不是返回默认系统颜色。

我做错了什么,我应该如何解决这个问题?

编辑:

如果我把InvalidateRect()我的WM_COMMAND处理程序放在IDC_MYEDIT那么问题似乎消失了:

0 投票
0 回答
952 浏览

c++ - 查找编辑控件的句柄

我正在尝试在另一个应用程序的窗口中查找编辑控件的句柄。基本上我到目前为止所做的如下:

我已经有了编辑控件和编辑控件的组合框所在窗口的句柄。我正在使用 EnumChildWindows() 函数查看父窗口的所有子窗口,直到我点击编辑控件:

我遇到的问题是如何确定我正在分析的特定句柄是否是编辑控件的句柄。SendMessage() 函数可能有一个 msg,它标识句柄用于什么类型的控件?...

问题:: 如何检查我拥有的句柄是否来自编辑控件?

PS:编辑控件在我正在使用的应用程序中没有名称,因此我有兴趣了解类型。

0 投票
2 回答
145 浏览

c++ - 编辑控件未完全使用所选画笔重新绘制

我有一个编辑控件,其背景颜色取决于用户输入的有效性。

如果输入有效,则编辑控件应保持默认外观,否则背景颜色应更改为浅灰色。

我正在检查EN_UPDATE处理程序中的有效性,如果它无效,我将HWND编辑控件的存储到vector.

视觉样式已启用。

当我更改鼠标指针的位置时,问题就来了。让我描述一下:

  1. 我单击编辑控件并键入无效输入。

  2. 我将鼠标指针移到别处,但编辑控件仍有焦点。

  3. 现在我按 删除无效输入backspace

  4. 一旦输入有效,颜色就会正确更改,但边框会变粗/变暗。

这些图片说明了问题:

在输入数据之前编辑控件: 在此处输入图像描述

用户粘贴无效数据时的编辑控件(鼠标指针在灰色区域): 在此处输入图像描述

最后一个字符是r

现在,如果鼠标指针不在编辑控件的客户区(例如在对话框的客户区)并且用户删除r这里是我得到的:在此处输入图像描述

注意较粗的边框。

当鼠标指针悬停在编辑控件上方时,它会正确重新绘制。

以下是相关的代码片段(如果需要,我可以提交一个小的SSCCE):

我怎样才能解决这个问题?

0 投票
3 回答
4046 浏览

c++ - 在编辑控件中显示无效输入的工具提示

我将编辑控件子类化为只接受浮点数。当用户输入无效时,我想弹出一个工具提示。我的目标行为就像一个编辑控件ES_NUMBER有:

在此处输入图像描述

到目前为止,我能够实现跟踪工具提示并在用户输入无效时显示它。

但是,工具提示放错了位置。我曾尝试使用ScreenToClientClientToScreen解决此问题,但失败了。

以下是创建SCCE的说明:

1) 在 Visual Studio 中创建默认的 Win32 项目。

2) 在您的 中添加以下内容stdafx.h,就在#include <windows.h>:

3)添加这些全局变量:

4)这是一个简单的编辑控件子类过程(仅用于测试目的):

5)添加以下WM_CREATE处理程序:

MyRegisterClass6)在(之前的return语句)中初始化通用控件:

就是这样,对于SSCCE

我的问题如下:

  1. 如何在主窗口中正确定位工具提示?我应该如何使用插入符号坐标进行操作?

  2. 有没有办法让工具提示句柄和工具信息结构不是全局的?

感谢您的时间。

此致。

编辑#1:

ScreenToClient通过删除子类过程中的调用,我设法实现了相当大的改进。x坐标很好,y坐标可以稍微低一些。我仍然想以某种方式删除全局变量...

编辑#2:

我可以通过使用EM_GETRECT消息来调整 y 坐标并将 y 坐标设置为格式化矩形的底部:

现在最终结果好多了。剩下的就是删除全局变量......

编辑#3:

看来我已经破解了!解决方案在EM_SHOWBALLOONTIPEM_HIDEBALLOONTIP消息中!工具提示放置在插入符号位置,气球形状与图片上的相同,并且它会正确自动关闭。最好的是我不需要全局变量!

这是我的子类过程片段:

0 投票
1 回答
1573 浏览

c++ - 子类编辑控件的输入验证仅接受浮点数

在我当前的项目中,过去几天我一直在为编辑框子类化而苦苦挣扎。到目前为止,我成功地将我的编辑框子类化并验证了输入,使其只接受数字、逗号、减号和键盘命令。

但是很长一段时间以来,我一直在改进输入验证。我希望我的编辑框表现如下:

  • 仅在第一个位置接受减号
  • 只接受一个前导零
  • 只接受一个逗号
  • 前导零后强制逗号
  • 通过“返回”、“删除”、全选然后在其上粘贴某些内容来删除单个字符或文本选择时管理这些情况

我当前形式的代码如下所示,几乎没有提供我上面指定的任何高级验证要求:

非常感谢有关如何通过算法解决此问题的任何想法。

更新

感谢 David Heffernan 和 IInspectable 的建议,我能够(几乎)解决我的问题,而无需对编辑控件进行子类化。

在对话框过程中(即包含编辑控件):

使用 onEditChange:

和 isFloat():

我可能会为用户添加更多视觉反馈,但这并不重要。

然而,这个问题还没有回答。我的意图是允许“,”作为可能的小数点。

0 投票
1 回答
1777 浏览

delphi - 如何在四个字符组中编辑 IBAN 号码?

https://en.wikipedia.org/wiki/International_Bank_Account_Number#Practicalities

以电子方式传输时,IBAN 不应包含空格:打印时,它以由单个空格分隔的四个字符为一组表示,最后一组长度可变,如下例所示:

典型的 IBAN 如下所示:(GR16 0110 1250 0000 0001 2300 695取自上述链接)。

我想让用户更容易输入 IBAN 号码。目前我使用 aTDBEdit来显示 IBAN 号码,并将其作为字符(不带空格)存储在数据库中。

我知道可以使用 格式化数字TNumericField.DisplayFormat,也有TMaskEdit,但两者都不是非常有用,因为 IBAN 不是数字并且在不同国家有不同的长度。

如何在 DB 控件中编辑四个字符组中的 IBAN 编号?

PS:我不是要求实际的 IBAN 验证,因为我已经知道了。

0 投票
1 回答
5144 浏览

c++ - 是否可以更改只读编辑控件的背景颜色

在此处输入图像描述我一直在尝试找到一个简单的解决方案来更改具有 ES_READONLY 标志的编辑控件的颜色。当编辑控件可编辑时,我拥有的代码(有点)有效,但是对具有只读标志的编辑控件没有影响。

我有评论只是为了检查我的代码是否有效,并且它在非只读的编辑控件上有效。如果我在我的另一个编辑控件上取出 ES_READONLY,它确实可以工作。我正在创建一个聊天程序,并且不希望用户能够在聊天框区域中输入内容。当它只读时,它使它变成灰色,但我想要白色。还有另一种方法可以做到这一点吗?此外,颜色仅对文本所在的区域进行着色,而不是对编辑控件的整个高度进行着色。我究竟做错了什么?

0 投票
2 回答
3101 浏览

winapi - 带有自定义边框的 WINAPI 编辑控件

在纯 WinAPI(无 MFC)中为 EDIT 控件实现自定义圆角边框的正确方法是什么?我需要这样的边框编辑:

在此处输入图像描述

我应该继承编辑控件并在 WM_NCPAINT 或类似的东西中进行自定义绘画吗?

0 投票
1 回答
1207 浏览

c++ - 在用户键入 MFC 时验证编辑控件的文本

问题/问题:我有一个用户输入用户名的编辑控件(文本框)。我正在尝试将输入的用户名与列表控件中列出的用户名进行比较。如果给定的用户名匹配,我的按钮文本应该从Create User变为Update User

我的问题是找到正确的事件/时间来比较字符串,而不创建无限循环。

我尝试过的:我尝试过使用编辑控件事件EN_CHANGEEN_UPDATE. 这两个事件都会导致堆栈溢出异常或无限循环。我认为每次键入内容或在我的编辑控件中使用退格键时都会调用其中一个事件。

在我的EN_CHANGE/EN_UPDATE事件中,我比较了用户名字符串并设置了按钮的文本。对于任一事件,它被称为无限次:

示例编辑控件.

如果红色文本匹配,则更改以蓝色突出显示的按钮的文本。

我应该在用户键入时使用不同的事件来实时验证字符串吗?

0 投票
1 回答
328 浏览

winapi - 编辑控件的行为不像官方记录的那样

ES_AUTOHSCROLL在主窗口中创建了具有样式的编辑控件。

文档指出,当用户按下 ENTER 键时,控件会将所有文本滚动回零位置。

我输入了很长的文本,将插入符号放在文本的末尾,然后按 Enter。

我听到的只是一声哔哔声,而不是记录在案的文本滚动。

重要提示:我已启用视觉样式。我已经在 Windows 7 上对此进行了测试。

问题:

哔哔声是正常行为(Microsoft 是否未能更新文档?)还是我做错了什么?