c++ - 如何在ATL/WTL对话框上注册自定义控件?

标签 c++ winapi visual-c++ atl wtl

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

我还使用自定义控件创建了一个对话框资源,其类名 CMyCustomControl .

如何正确注册控件以便可以将其显示在对话框上?

最佳答案

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

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

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

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

关于c++ - 如何在ATL/WTL对话框上注册自定义控件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10110061/

相关文章:

c++ - 指定 64 位对齐

c++ - 使用 C++ 连接到 PC 的设备检测

c++ - 无法将 char 类型转换为 int。

c++ - 将 3D 数组( vector )转换为 vtk 非结构化网格

winapi - 是否可以确定Windows为字体链接选择的字体?

c++ - 在 Windows 中 - API - 如何获取/使用当前用户权限(或单点登录)

c++ - 是否有任何 Win32 API 可以触发 Windows 中的休眠或挂起模式?

c++ - 尝试使用 libpng 加载图像时 Windows 上出现运行时错误

c# - 如何在 Visual C#/C++ 中实现文本转语音 (TTS)?

c++ - 验证像 "-2-2"或 "--22"或 "2--2"这样的 CString 是无效的