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;
}
ありがとうございます。サブクラス化の仕事!しかし、私はライン 'AfxMessageBox(_T( "クリックした"))を追加すると、小さな問題があります);'デフォルトのOnLButtonDownハンドラでは、クリックするとポップアップしますが、ジャンプしませんでしたが、デフォルトのCMFCLinkCtrl :: OnLButtonDownハンドラの呼び出しをコメントしませんでした。 –
CMFCLinkCtrlはおそらく、メッセージボックスにフォーカスが当たったときに起動しないLBUTTONDOWNの後の別のメッセージを待っています。 Spy ++(Visual Studioから)を使用して、LinkCtrlに送信されたメッセージの順序を比較してください。 – PhilMY
私はリンク制御を 'ON_BN_CLICKED'を処理するように簡単にしたいと思っていました。これを行うために、私は単にクラスを派生し、そのコンストラクタで 'm_bDefaultClickProcess'を' TRUE'に設定しました。それだけでうまくいく! :) – sergiol