WTLATLVisual C++ 7.1Visual C++ 7.0Visual Studio .NET 2003Windows 2003Windows 2000Visual C++ 6.0Windows XP中级开发Visual StudioWindowsC++
WTL 的自动完成组合框






3.18/5 (18投票s)
2003年8月18日
1分钟阅读

53493

2484
WTL 自动完成组合框的实现。
引言
本文假定读者对 C++、Win32 编程和 WTL 有基本的了解。这是一个为 WTL 实现的自动完成 ComboBox。实际上,这是对 这里 找到的 MFC 版本的移植,该版本由 Chris Maunder 开发。
背景
关于自动完成 ComboBox 没什么好说的,除了组合框样式通常包括 CBS_DROPDOWN
。开发者需要负责序列化 ComboBox 的内容(这意味着加载/保存到注册表、文件或数据库)。为了帮助您在项目中实现自动完成对话框,我用 // _AC_INSERT_
注释标记了需要修改的代码行。
使用代码
在您的项目中使用的代码非常简单,第一步是编辑对话框或窗口类的头文件,并包含以下行:#include "AutoCombo.h"
。
下一步是将以下行插入为对话框或窗口类的成员变量:CAutoCombo m_cboAuto
;
为了确保继承的自动完成组合框类处理组合框消息,我们必须将任何通知反射到其他控件,请参阅以下代码片段。
... Some other code BEGIN_MSG_MAP(CMainDlg) MESSAGE_HANDLER(WM_INITDIALOG, OnInitDialog) COMMAND_ID_HANDLER(ID_APP_ABOUT, OnAppAbout) COMMAND_ID_HANDLER(IDOK, OnOK) COMMAND_ID_HANDLER(IDCANCEL, OnCancel) REFLECT_NOTIFICATIONS() END_MSG_MAP() ... Some other code
需要注意的是,如果存在任何 ATL_
消息宏,则 REFLECT_NOTIFICATIONS()
必须位于 ATL_
消息宏的开头。
最后,在对话框初始化或窗口创建时(通常在 WM_INITDIALOG
处理程序或 WM_CREATE
处理程序中处理),通过添加以下行来子类化组合框控件。
历史
V1.0 文章创建。