本人想捕获文本框的鼠标单击事件,在PreTranslateMessage这么处理,结果所有的单击事件都成了这个文本框的单击了。
  请大虾们指教
BOOL CDlgDZEnvironment::PreTranslateMessage(MSG* pMsg)
{
    // TODO: 在此添加专用代码和/或调用基类
if( pMsg->message == WM_LBUTTONDOWN ) 

CEdit * pEdit = ( CEdit* )GetDlgItem( IDC_EDIT_ALTITUDE    ); 
if( pMsg->hwnd == pEdit->m_hWnd ) 

AfxMessageBox( L"test" ); 

} return CDialog::PreTranslateMessage(pMsg);
}

解决方案 »

  1.   

    就是每次单击,都会执行“AfxMessageBox( L"test" );”
      

  2.   

    那是肯定的.if( pMsg->message == WM_LBUTTONDOWN && bInEdit == TRUE) 再加上一个判断。
    这个判断中变量bInEdit是这样的。获取当前鼠标所在位置,判断当前位置是否在Edit中,如果不在设变量bInEdit = FALSE,否则设bInEdit = TRUE。上面给bInEdit值的过程可以在PreTranslateMessage函数前面添加。应该不难吧!
      

  3.   

    很简单,捕捉WM_LBUTTONUP事件,把你的if( pMsg->message == WM_LBUTTONDOWN ) 改成if( pMsg->message == WM_LBUTTONUP )