做了一个对话框,添加了鼠标左键按下的响应函数:
void CRq::OnLButtonDown(UINT nFlags, CPoint point) 
{
// TODO: Add your message handler code here and/or call default
MessageBox("鼠标响应","提示");  
CDialog::OnLButtonDown(nFlags, point);
}
运行后,鼠标点击对话框的空白处,响应函数起作用,而当鼠标点击对话框中的控件(文本编辑框,按钮等)时,则响应函数不起作用。
请问各位高手如何能使鼠标点击对话框中的控件时,响应函数也可以起作用?

解决方案 »

  1.   

    响应PreTranslateMessage,可以截获鼠标事件
    BOOL CAboutDlg::PreTranslateMessage(MSG* pMsg) 
    {
    if(pMsg->message == WM_LBUTTONDOWN)
    {
    MessageBox("鼠标左键按下。","提示");  
    }
    return CDialog::PreTranslateMessage(pMsg);
    }
      

  2.   

    顶一下鹦鹉大哥!
    控件也是一个窗口,当用鼠标点击控件时,这个消息会被控件获取,因为WindowFromPoint(获取包含指定点的窗口的句柄)返回的时控件的句柄。另外,WM_KEYDOWN消息也会被控件获取,如果将窗体中的所有控件都删除,窗体就会捕获到这个消息,使用PreTranslateMessage可以让主对话框首先截获这些消息