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 に答える