如何在 ATL/WTL 对话框中注册自定义控件

How to register a custom control on ATL/WTL dialog?

本文关键字:对话框 注册 自定义控件 WTL ATL      更新时间:2023-10-16

我从ATL::CWindowImpl<CMyCustomControl>派生了一个自定义控件并声明DECLARE_WND_CLASS(_T("CMyCustomControl")) .

我还制作了一个对话框资源,其中包含类名为 CMyCustomControl 的自定义控件。

如何正确注册控件,以便可以在对话框中显示它?

在 WTL 中创建自定义控件有三种典型方法。

  1. DECLARE_WND_CLASS/DECLARE_WND_SUPERCLASS + RegisterClassEx API 按名称注册类 + 对话框模板中的自定义控件引用,以通过类名实例化控件
  2. 实现窗口类,尤其是从CWindowImpl继承,并手动创建控件,尤其是从OnCreate/OnInitDialog
  3. 实现窗口类,通过对话框模板实例化标准控件,并对控件实例进行子类化以更改其行为(例如,带有超链接的静态,自定义列表视图,带有颜色突出显示的编辑控件等)

对于这三者,您需要做的不仅仅是类定义中的宏。您将在这里找到很好的例子:http://www.viksoe.dk/code/all_wtl.htm"控件"部分下。

当然,第四种方法是实现 ActiveX 控件。