如何在运行时将编辑样式更改为es_number

How to change the edit style to ES_NUMBER at run time?

本文关键字:es number 样式 运行时 编辑      更新时间:2023-10-16

创建编辑控件时,我不添加ES_NUMBER。稍后,基于布尔标志,我想更改样式并将其制成ES_NUMBER并将其恢复为布尔标志的另一个值。

文档具有答案。一些摘录:

使用CreateWindow或CreateWindowex函数创建编辑控件,指定编辑类,适当的窗口样式常数以及以下编辑控制样式的组合。创建控件后,这些样式无法修改,除非如前所述。

因此,创建控件后我们可能会或可能无法更改样式。让我们看看:

es_number

仅允许将数字输入到编辑控件中。请注意,即使使用此集合,仍然可以将非数字粘贴到编辑控件中。

创建控件后要更改此样式,请使用setWindowlong。

要将输入到编辑控件中的文本转换为整数值,请使用getDlgitemint函数。要将编辑控件的文本设置为指定整数的字符串表示形式,请使用setDlgitemint函数。

添加样式执行此操作:

LONG style = GetWindowLong(hwnd, GWL_STYLE);
SetWindowLong(hwnd, GWL_STYLE, style | ES_NUMBER);

或删除它:

LONG style = GetWindowLong(hwnd, GWL_STYLE);
SetWindowLong(hwnd, GWL_STYLE, style & ~ES_NUMBER);