2

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

我还制作了一个带有类名的自定义控件的对话框资源CMyCustomControl

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

4

1 回答 1

2

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

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

对于所有这三个,您需要做的不仅仅是类定义中的宏。你会在这里找到很好的例子:http: //www.viksoe.dk/code/all_wtl.htm在“控制”部分。

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

于 2012-04-11T19:40:45.667 回答