MFCでやっているのであれば PreTranslateMessage() をオーバーライド
して、メッセージループをフック。

BOOL CCardRead::PreTranslateMessage(MSG* pMsg)
{
if(pMsg->message == m_card_find){
// カードを捕捉した場合の処理
}
else if(pMsg->message == m_card_lose){
// カードを見失った場合の処理
}

return CDialog::PreTranslateMessage(pMsg);
}