CTaskDialog 页脚中的超链接
Posted
技术标签:
【中文标题】CTaskDialog 页脚中的超链接【英文标题】:Hyperlinks in CTaskDialog footer 【发布时间】:2019-03-26 14:10:33 【问题描述】:我读过这篇文章:
Article
它清楚地表明页脚支持超链接。我不知道该怎么做。我不想要文本中的文字 URL,而是其他超链接到程序中帮助文章的文本。
【问题讨论】:
您只尝试过 html 吗?SetFooterText(LR"(Footer information for the <a href="www.***.com">dialog</a>.)");
@acraig5075 这确实创建了一个超链接。谢谢你。但是,我现在意识到我不能使用这种方法,因为它会链接到 CHM 文件中的主题。
我怀疑如果您使用CTaskDialog::OnHyperlinkClick 处理点击,那么您应该能够相应地调用AfxGetApp()->HtmlHelp(...)
。
@acraig5075 所以你建议我继承我自己的任务对话框类,以便我可以覆盖这个处理程序。好的...
@acraig5075 请看我的回答。
【参考方案1】:
这行得通:
#include "stdafx.h"
#include "CMyTaskDialog.h"
IMPLEMENT_DYNAMIC(CMyTaskDialog, CTaskDialog)
CMyTaskDialog::CMyTaskDialog(_In_ const CString& strContent,
_In_ const CString& strMainInstruction,
_In_ const CString& strTitle,
_In_ int nCommonButtons,
_In_ int nTaskDialogOptions, _In_ const CString& strFooter)
: CTaskDialog(strContent, strMainInstruction, strTitle, nCommonButtons, nTaskDialogOptions, strFooter)
CMyTaskDialog::~CMyTaskDialog()
HRESULT CMyTaskDialog::OnHyperlinkClick(const CString& strHref)
HWND hwnd =
HtmlHelp(
GetDesktopWindow(),
_T("d:\\MeetSchedAssist.chm::/") + strHref,
HH_DISPLAY_TOPIC,
NULL);
return S_OK;
但是,还有两个问题:
CTaskDialog
没有GetSafeHWnd
API 调用,所以我不知道如何将其设置为父级。
OnHyperlinkClick
是通用的,因此如果您在任务对话框中有多个链接,您可能需要测试该短语以确定您希望如何处理它。
【讨论】:
否GetSafeHwnd
- 这只是 MFC 界面的限制。底层回调接口传递HWND
。尝试覆盖CTaskDialog::TaskDialogCallback。检查uNotification == TDN_HYPERLINK_CLICKED
。
@zett42 很抱歉,我未能覆盖此回调好友方法。
它可能是一个静态方法,所以你不能覆盖它。当 MFC 遇到这种情况时,您始终可以选择直接使用 API,here is an example。
@zett42 谢谢。我已经走了另一条不使用CTaskDialog
的路线,所以现在这是一个有争议的问题。但是我们可以将答案留在那里,因为有人可能会使用它。以上是关于CTaskDialog 页脚中的超链接的主要内容,如果未能解决你的问题,请参考以下文章
如何使用php读取docx文件中图像的超链接以及页眉和页脚的内容?