Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Winapi 关闭ComboBox的自动完成功能_Winapi_Autocomplete_Ccombobox - Fatal编程技术网

Winapi 关闭ComboBox的自动完成功能

Winapi 关闭ComboBox的自动完成功能,winapi,autocomplete,ccombobox,Winapi,Autocomplete,Ccombobox,标准的Windows/MFC组合框(下拉模式)有一个自动完成功能,我想关闭它,但不知道如何关闭 示例1:创建一个列表值为“Abc”和“Def”的组合框。输入“A”作为编辑值并使用下拉按钮。“A”将改为“Abc” 示例2:相同的起始值。打开下拉列表,输入“A”作为编辑值,然后按TAB键。“A”将改为“Abc” 这些示例甚至可以在VisualStudioIDE对话框编辑器测试模式下工作。不需要编译的exe 从“A”到“Abc”的变化可能是一个特性,但客户并不需要它。有什么方法可以阻止它吗?您可以通过

标准的Windows/MFC组合框(下拉模式)有一个自动完成功能,我想关闭它,但不知道如何关闭

示例1:创建一个列表值为“Abc”和“Def”的组合框。输入“A”作为编辑值并使用下拉按钮。“A”将改为“Abc”

示例2:相同的起始值。打开下拉列表,输入“A”作为编辑值,然后按TAB键。“A”将改为“Abc”

这些示例甚至可以在VisualStudioIDE对话框编辑器测试模式下工作。不需要编译的exe


从“A”到“Abc”的变化可能是一个特性,但客户并不需要它。有什么方法可以阻止它吗?

您可以通过调用来微调任何编辑控件的自动完成行为。要获取组合框的编辑控件部分的句柄,请向组合框控件发送消息


要删除不需要的功能,
shautomplete
的标志不能包括
SHACF\u USETAB

谢谢,听起来不错,但似乎不起作用。我刚刚用SHACF_AUTOAPPEND_FORCE_OFF、SHACF_AUTOSUGGEST_FORCE_OFF对对话框、组合框和组合框编辑控件进行了测试。所有返回S_OK,但问题仍然存在。对于这两个标志,文档要求如下:“此标志必须与一个或多个SHACF_FILESYS*或SHACF_URL*标志结合使用。”哦,你当然是对的。用SHACF_AUTOAPPEND_FORCE_OFF | SHACF_AUTOSUGGEST_FORCE_OFF | SHACF_FILESYSTEM | SHACF_urall尝试过它。同样,所有返回S_OK,但问题仍然存在。仅使用SHACF_DEFAULT只是为了进行检查,这产生了一个有趣的效果:我能够用我的组合框自动完成URL和路径。因此,我的呼叫应用于正确的HWND。我认为这个函数只用于配置URL/路径自动完成,而不用于自动完成下拉数据…@用户您似乎是对的,
shautomlete
确实只用于文件/文件夹/shell名称空间。要禁用自动完成,您似乎必须创建一个
iautocomlete
COM对象,并实现一个不返回任何内容的普通
IEnumString
源代码。您可能还必须通过调用
iautomplete2::SetOptions
来调整行为。由于ATL是众所周知的文档不足和功能过剩,如果它已经有了所有的成分,准备拼凑起来,我不会感到惊讶。或多或少解决了它,我写了我自己的几乎像一个组合框。。。