2

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

4

1 回答 1

1

子类化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;
}
于 2012-05-11T12:11:06.677 回答