mfc - 如何禁用 MFC 链接控件的默认行为?

标签 mfc hyperlink controls

我在基于对话框的应用程序中使用MFC链接控件,并为其添加了BN_CLICKED事件处理程序,希望它能为我做点什么,但是,当我单击它时,它什么也不做(当我没有设置它的url时,当我设置url时,它会跳转到该url),我的事件处理程序不会被触发。那么,如何禁用其默认的“跳转”行为并触发我的处理程序?

最佳答案

子类化 CMFCLinkCtrl 并添加 ON_WM_LBUTTONDOWN 事件处理程序似乎有效。

然后您可以选择是否调用 CMFCLinkCtrl::OnLButtonDown

class CMyLinkCtrl : public CMFCLinkCtrl {
    DECLARE_DYNAMIC(CMyLinkCtrl)
public:
    CMyLinkCtrl();
    virtual ~CMyLinkCtrl();
    afx_msg void OnLButtonDown(UINT nFlags, CPoint point);
protected:
    DECLARE_MESSAGE_MAP()
};

IMPLEMENT_DYNAMIC(CMyLinkCtrl, CMFCLinkCtrl)

CMyLinkCtrl::CMyLinkCtrl() {
}

CMyLinkCtrl::~CMyLinkCtrl() {
}

BEGIN_MESSAGE_MAP(CMyLinkCtrl, CMFCLinkCtrl)
    ON_WM_LBUTTONDOWN()
END_MESSAGE_MAP()

void CMyLinkCtrl::OnLButtonDown(UINT nFlags, CPoint point) {
    static bool bDisabled = false;
    if(bDisabled) {
        MessageBox(_T("Link is disabled"));
    } else {
        CMFCLinkCtrl::OnLButtonDown(nFlags, point);
    }
    bDisabled = !bDisabled;
}

关于mfc - 如何禁用 MFC 链接控件的默认行为?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10527209/

相关文章:

visual-c++ - 如何将 GetProfileBinary 的结果保存到智能指针中?

c++ - 排序 CMFCListCtrl 时出现奇怪的行为

javascript - 单击时捕获链接 (<a>) 元素中的文本

css - 段落内的超链接标记和文本对齐 :center

vb.net - 具有多个控件的透明背景

windows - 窗口 Hook 在 Windows 7 中不起作用,但在 Windows XP 中不起作用

windows - 为什么我的 MFC 应用程序在与两个滚动条交互后挂起?

html - IE8 - 单击链接内的 div 时没有任何反应

swift - 分段控制仅在第一次按下时起作用

c# - 从控件中删除除一项之外的所有项目