0
创建编辑控件时,我不添加ES_NUMBER。后来根据布尔标志,我想改变它的样式并使其成为ES_NUMBER,并将它恢复到布尔标志的另一个值上。想要在运行时将编辑样式更改为es_number
创建编辑控件时,我不添加ES_NUMBER。后来根据布尔标志,我想改变它的样式并使其成为ES_NUMBER,并将它恢复到布尔标志的另一个值上。想要在运行时将编辑样式更改为es_number
该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);
我建议你用[SetWindowLongPtr]去(https://msdn.microsoft.com改为/en-us/library/windows/desktop/ms644898.aspx)。它在这里没有什么区别,但是遵循*总是使用'SetWindowLongPtr' *规则将是安全的选择。 – IInspectable