我在基于对话框的应用程序中使用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/