如何使用 WTL::CHyperLink
How do I use WTL::CHyperLink?
我正在尝试使用WTL::CHyperLink,以便在我的应用程序上显示可点击的链接。
根据本文,我需要将其附加到静态文本控件。
因此,在我的 GUI 中,我现在已经创建了一个 ID 为 IDC_LINK 的静态文本控件
在我的DDX地图中:
BEGIN_DDX_MAP(MyDialog)
DDX_CONTROL_HANDLE(IDC_LINK, m_link)
END_DDX_MAP()
并作为成员变量:
CHyperLink m_link;
但是,我总是留下这个:
Error C2679: Binary Operator '=': No operator accepting a right-hand operant of type 'ATL::CWindow' (or no suitable conversion possible)
有谁知道我做错了什么?
WTL CHyperLink
是一个自定义控件实现类,与 CEdit
等其他类不同,它们是薄HWND
包装器,您无法通过使用带有窗口句柄的赋值运算符(这是 map 尝试执行的操作DDX_CONTROL_HANDLE
并且仅通过一般操作窗口句柄来初始化控件。您应该从头开始创建一个控件窗口(CHyperLink::Create
),或者采用预先创建的静态控件并使用CHyperLink::SubclassWindow
对其进行子类化。
由于对话框模板中已经存在静态控件(该控件应该支持超链接),因此可以尝试使用宏而不是DDX_CONTROL_HANDLE
DDX_CONTROL
因为它尝试通过使用SubclassWindow
调用进行子类化来初始化。
非 DDX 初始化代码片段如下:WM_INITDIALOG
处理程序中的 SubclassWindow
+ SetHyperLink
调用。
您之前问过类似的问题:尝试将控件与DDX_CONTROL挂钩时出错 当时您以另一种方式混淆了相同的两个 DDX 宏......
相关文章:
- 如何在 WTL 项目上添加对话框
- 如何防止 WTL CSplitterWindow 大小调整
- 如何在 WTL 应用程序中设置 CWindowImpl 全屏
- 如何实现 WTL 头文件外
- WTL CidleHandler的适当使用是什么?
- WTL 如何在同一窗口中使用 2 个自定义绘制的 CListViewCtr
- C++如何使用WTL绘制折线图
- 如何使用 WTL 拒绝调整窗口大小
- 自定义图像工具栏 WTL
- 纯 Win32 C++(无 WTL、MFC 等)中的自定义菜单边框
- 如何在WTL的树视图控件中包装项文本
- 在 WTL 中使向导的"关闭"按钮灰显
- 如何缩小 WTL 应用程序的大小
- 如何在 WTL 中删除指向无模式对话框的指针
- C++ WTL: Deriving from CListBox
- WTL 和 CContainedWindow 导致访问冲突
- 如何将菜单栏添加到我的 WTL 对话窗口
- 如何使用 Win32/WTL 实现列表视图的缩放
- WTL,无法创建工具栏
- 如何使用 WTL::CHyperLink