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文件中图像的超链接以及页眉和页脚的内容?

Bootstrap 3 - 页脚中的链接在移动版本上不起作用

图像/文本超链接 - HTML/CSS

论文:从页脚中删除属性链接

在 Gridview 的页脚中访问链接按钮单击事件

如何设置Word页脚中的总页数