MFC实现光标在button控件上时,怎么屏蔽控件的连续响应,让控件只响应一次

MFC实现光标在button控件上时,如何屏蔽控件的连续响应,让控件只响应一次?
我用的是OnSetCursor函数
BOOL CmyDlg::OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message)
{
       if(pWnd == GetDlgItem(IDC_Internet))  //获得IDC_Internet控件的区域,当光标在控件上时,打开网页。
{  
SetCursor(LoadCursor(NULL,   IDC_HAND));///当光标在控件上时,光标形状发生变化

ShellExecute(0, NULL, _T("http://hao.360.cn"), NULL, NULL, SW_NORMAL);///打开一个网页

return   TRUE;  

     return CDialogEx::OnSetCursor(pWnd, nHitTest, message);
}

执行的结果是控件会连续响应,怎么才能让控件只响应一次,也就是只打开一次网页。我试了加一个bool型的变量,执行后变为false,但是还是不行,一样会响应很多次。
------解决思路----------------------
1、在OnSetCursor()中只完成改变光标形状。
2、在OnLButtonDown()中判断如果在指定区域,才执行打开网页的操作。

OnSetCursor()是一个连续的事件,只要鼠标动就会发生,你将执行打开网页的语句放在此处,当然会连续执行。
------解决思路----------------------
BOOL g_bExecuted =False;
BOOL CmyDlg::OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message)
{
     if(g_bExecuted )
   {
           return CDialogEx::OnSetCursor(pWnd, nHitTest, message);
    }
      else if(pWnd == GetDlgItem(IDC_Internet))  //获得IDC_Internet控件的区域,当光标在控件上时,打开网页。
  {  
SetCursor(LoadCursor(NULL,   IDC_HAND));///当光标在控件上时,光标形状发生变化

ShellExecute(0, NULL, _T("http://hao.360.cn"), NULL, NULL, SW_NORMAL);///打开一个网页
g_bExecuted =TRUE;
return   TRUE;  

     return CDialogEx::OnSetCursor(pWnd, nHitTest, message);
}

这样应该可以只执行一次
------解决思路----------------------
鼠标移动到控件上,  正确的做法应该是hover事件.  当然, 需要TrackMouseEvent