如何在编辑框中使用IAutoComplete接口

2016-01-29 12:00 0 1 收藏

如何在编辑框中使用IAutoComplete接口,如何在编辑框中使用IAutoComplete接口

【 tulaoshi.com - C语言心得技巧 】

如何在编辑框中使用IAutoComplete接口
如果可能我想用打包类来实现 赵湘宁 本文例子代码 唉!,就叫我封装先生吧。
你算是找对地方了。但是我要先声明我的解决办法不是你所希望的-甚至也不是我自己所希望的!     什么是autocomplete呢?你也许已经注意到当你在IE的地址编辑框中敲入什么东西的时候,就会出现一个下拉组合框显示所有匹配敲入字符的URLs,亮条落在第一个匹配项上,你只要按下回车键就可以了(图一)。在“文件/打开”对话框及Windows其它地方也有相同的效果。
Autocompletion真是一个伟大的发明。

(图一)     我第一次看到你的问题时,说句实话,我还从来没有听说过IAutoComplete-你是不是觉得我应该熟悉微软发布的每一个新的COM接口?-对我来说这似乎是个好主意。代码一中列出了IAutoComplete的一些可选项。IAutoComplete与IEnumString一起工作,IEnumString是一个通用的枚举串列表。你只要将一个串枚举器指针和一个 Windows 编辑框或组合框句柄赋给IAutoComplete对象,其它的事情你就不用管了。如果你想设置发烧选项,就使用IAutoComplete2接口。每一个COM接口都是使用二号版本加以完善的,即便它只有两个方法。     IAutoComplete有一个缺陷,它只存在于Windows 2000,具体地说,实现IAutoComplete(CLSID_IAutoComplete)的COM对象位于shell32.dll的5.0版本中,它只随Windows 2000一起发布,Windows 95,Windows 98和Windows NT 4.0中则没有。如果你要使用它,要做的第一件事情是实现IEnumString接口。     当我劳神费力处理完QueryInterface,AddRef,Release以及CLSIDs,CoInitialize,并在构造器中决定了m_dwRef是取0还是1后,然后我使用自己认为还不错的方法,并打算经历所有痛苦和磨难来封装IAutoComplete,如果最终这个类将只能在Windows 2000中运行,那对我所做的努力打击实在是太大了。     这真是个难题,我该怎么办呢?我们的目的是在一个列表串中搜索与用户输入匹配的串。自己来写这种代码有多难啊!现代编程的问题之一是没有人愿意多写代码。不要让我犯错误-COM很棒。但是除非你已经有一个现成的IEnumString,否则对于autocompletion来说似乎是太繁琐了。     CAutoComplete是我写的一个类,这个类大体上实现了autocompletion,不用COM,也不用shell32.dll,它只是一个简单的类而已,你可以将它的cpp文件添加到你的应用,DLL或者扩展库中。它可以工作于任何的Windows版本,甚至是Windows 3.1。     CAutoComplete没有实现IAutoComplete中的所有的特性。例如,IAutoComplete有一个特性是当用户按下 Ctrl+Enter 时的快速完成格式串。这个格式串是一个Windows用来转换用户输入的 sprintf 串。如果这个格式串是“http://www.%s.com” 并且用户敲入“woowoo”,IAutoComplete 将完成整个内容http://www.woowoo.com。另外一个IAutoComplete特性是让你指定一个串作为注册键来存储格式串。这些特性都很好,但他们太IE化,似乎不属于通用的
autocompletion接口,所

来源:https://www.tulaoshi.com/n/20160129/1484205.html

延伸阅读
一、 为什么写这篇东西 自己在使用 BCB5 写一些程序时需要检查很多东西,例如内存泄漏、资源是否有释放等等,在使用了很多工具后,发觉 BCB5 本身自带的工具—— CodeGuard ,非常不错,使用也挺方便的,但是摸索了很久(以及翻查了一些资料,包括 HELP )才算是会用了。写这篇文章的目的希望有这方面的问题的朋友可以借鉴一下,大家互相学习,...
在Windows开发中弹出对话框是一种常用的输入/输出手段,同时编辑好的对话框可以保存在资源文件中。Visual C++提供了对话框编辑工具,利用编辑工具可以方便的添加各种控件到对话框中,而且利用ClassWizard可以方便的生成新的对话框类和映射消息。 首先资源列表中按下右键,可以在弹出菜单中选择“插入对话框”,如图1。 ...
如何在EDITBOX控件中使用背景位图 作者:zhoudb 下载本文源代码 在VC中,标准的WINDOWS控件如TREEVIEW,EDITBOX,COMBOBOX和LISTBOX等控件都不支持选择背景位图的属性,所以如果要使这些标准控件达到这种效果,必须有些非常规的方法。本文介绍一个CEDIT类如何实现背景位图,并且可以更换背景的例...
标签: SQLServer
懒得翻译原文了,一般在视图中使用Order by是无效的,除非使用了Top关键字,那么我们可以用Top 100 percent来欺骗SQL的语法分析器。 USE pubs GO CREATE VIEW AuthorsByName AS SELECT TOP 100 PERCENT * FROM authors ORDER BY au_lname, au_fname GO
标签: word
如何在Word2013中使用声音提示功能   第1步,打开Word2013文档窗口,依次单击文件→选项按钮。 第2步,打开Word选项对话框,切换到高级选项卡。在常规区域选中提供声音反馈复选框,并单击确定按钮。 Word2013怎样使用字符度量单位   第1步,打开Word2013文www.Tulaoshi.com档窗口,依次单击文件→选项按...

经验教程

53

收藏

76
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部