私はダイアログ ベースのアプリケーションで MFC リンク コントロールを使用しており、BN_CLICKED のイベント ハンドラーを追加して、それが何かをしてくれることを期待していますが、それをクリックしてもまったく何もしません ( URLを設定しないでください。URLを設定すると、そのURLにジャンプします)、イベントハンドラーがトリガーされません。では、デフォルトの「ジャンプ」動作を無効にしてハンドラーをトリガーする方法は?
質問する
1497 次
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 に答える