创建编辑控件时,我不添加ES_NUMBER
。后来基于布尔标志,我想改变样式并使其成为ES_NUMBER
并将其恢复为布尔标志的另一个值。
答案 0 :(得分:6)
documentation有答案。一些摘录:
要使用CreateWindow或CreateWindowEx函数创建编辑控件,请指定EDIT类,相应的窗口样式常量以及以下编辑控件样式的组合。创建控件后,除非另有说明,否则无法修改这些样式。
因此,我们可能会或可能无法在创建控件后更改样式。我们来看看:
<强> 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);