问题标签 [cedit]

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 投票
2 回答
3411 浏览

winapi - 如何使用 MFC 更改禁用编辑框中的文本颜色?

我有一个对话框,其中编辑框被禁用,但文本应显示为红色而不是默认的灰色。我尝试了以下方法:

但它仍然仅以灰色显示文本。但是如果我删除基类调用CEdit::OnEnable(bEnable);,那么新的文本颜色就会生效。谁能解释代码中有什么问题?

谢谢你的时间。

干杯...

编辑:(我的评论移至编辑)对不起,我忘了在我的原始帖子中提及它。不是处理 ON_WM_CTLCOLOR(),而是处理 ON_WM_CTLCOLOR_REFLECT()。我不明白的是,删除对基类的调用会将文本的颜色更改为指定的颜色,但保留它只会将其更改为默认灰色。

0 投票
2 回答
1015 浏览

mfc - DDV_MinMaxUInt :自定义验证消息

我正在使用 MFC 开发移动应用程序。对于其中一个 CEdit 控件,在对话框中,我声明了一个变量 long int,如下所示。

因此,无论何时,我都会尝试使用无效值(不在指定范围内的整数或字母字符)关闭对话框。它会抛出一条消息并聚焦该特定控件。(自动完成)

现在我的问题是,我有一个按钮,当单击此按钮时,如何调用相同的验证功能?

0 投票
2 回答
1526 浏览

mfc - ON_EN_KILLFOCUS 多次调用

我正在使用 CEdit 控件。我已经为 ON_EN_KILLFOCUS 消息分配了一个事件处理程序。它被正确调用。但问题是,当我关闭对话框时,此事件处理程序会被调用四次。我怎样才能防止这种情况?

0 投票
0 回答
2010 浏览

mfc - 在禁用的 CEdit 控件中更改文本的字体颜色

我想更改当前为系统灰色的已禁用 CEdit 控件中文本的字体颜色。

由于我使用灰色背景,我希望更改文本的字体颜色(当前设置为 COLOR_GRAYTEXT 的 rgb 值)以使其更易于阅读。

有一个使用 SetSysColors() 的解决方案,但是对于更改所有正在运行的应用程序的值会产生不良影响。有人知道更好的解决方案吗?

我尝试处理 WM_CTLCOLORSTATIC/WM_CTLCOLOREDIT 消息,但 SetTextColor() 方法似乎不起作用,应用程序继续使用系统灰度文本。有谁知道这样做的正确方法?

0 投票
2 回答
2336 浏览

mfc - CEdit,WM_PASTE

假设我在 CEdit 后代中有一个 wm_paste 消息的处理程序:

假设在某些情况下,我想从此方法触发粘贴的默认行为。我该怎么做?CEdit::OnPaste 不存在...

干杯

0 投票
2 回答
1158 浏览

c++ - 没有 ES_AutoHScroll 的“无限”CEdit 文本

我对 ES_AUTOHSCROLL Set 有不良反应。

我正在尝试做的是创建一个使用其中的文本调整大小的编辑。但是,每当用户在编辑结束后键入时,我就会遇到问题。

如果没有 ES_AUTOHSCROLL,用户无法输入超过当前编辑大小,因此我的编辑不会增长以适应新字符,因为输入被忽略。

使用 ES_AUTOHSCROLL 当用户键入超过当前编辑大小时,它会在我有机会增加窗口大小之前先滚动,所以即使窗口现在大到足以容纳新字符,我最终也会隐藏第一个字母.

我的解决方案是让我的编辑一个最大宽度的字符比它所持有的文本长,这样就可以了,因为你有空间输入下一个字符。不过,这看起来有点俗气。

如果有一种方法可以在不使用 ES_AUTOHSCROLL 的情况下允许比编辑窗口的宽度更宽的文本,我会被设置。

0 投票
2 回答
1025 浏览

c++ - Visual C++ CEdit 控件 - 为什么 SetWindowText() 更改了插入点

以下片段来自多行 CEdit 控件的 OnChange() 处理程序,该控件设置了“WantReturn”。

如果 SetWindowText() 被注释掉,用户的文本会在右边建立,一切都很好。但是,随着它的进入,文本插入点移动到左边缘,并且用户的字符进入现有字符的左侧。

我想在两个调用之间添加一些修改文本,并且可以通过子类化 CEdit 来获得我想要的东西。但我很想知道 Get() 和 Set() 是否有办法做到这一点。

我正在使用带有 Service Pack 5 的 Visual C++ 6。现在已经 11 岁了,但正如他们所说的那样,“软件不会磨损”:-)。

0 投票
1 回答
385 浏览

winapi - 如何操作 CEdit 的内容?

我有编辑控制的情况,我需要一些指导。文本编辑器在大多数情况下正常运行,但在其他情况下,根据键入前的最后几个字符和键入的字符,最后几个字符必须替换为不同的字符。

对我来说显而易见的解决方案是在内容更改之前有一个字符缓冲区 GetWindowText(),将键入的字符添加到缓冲区中,必要时操作缓冲区,然后是 SetWimdowText()。

我知道编辑控件有自己的缓冲区。那么这是拥有自己的缓冲区的正确方法,还是有办法与它共享缓冲区等?编辑器的字符可能不超过 4MB。

我需要它才能在 Windows 7 和 XP 上工作,而不是热衷于旧版本。我使用 MFC。

谢谢你的帮助。

0 投票
1 回答
2499 浏览

mfc - mfc 中的 CEdit 文本检索

我正在使用具有 Multiline 属性的 CEdit。我的目标是检索单独的行并将其放在我的 CStringArray 中。

在使用 GetLine 检索该行时,我必须知道该行的字符串长度。

如何得到这个?

我尝试了函数 GetLineLength() 但这将返回整行的大小而不是指定的文本。

我粘贴了到目前为止我已经实现的代码:

0 投票
2 回答
1241 浏览

windows-7 - 如何修改 CEdit 控件的上下文菜单?

在 Windows 7 之前,解决方案很简单。只需添加您自己的菜单并编写您自己的“撤消、重做、剪切、复制、粘贴、删除、全选”菜单项。但是现在这已经不可能了,因为菜单已经变得非常复杂,包含 unicode 和输入消息的东西。