做了一个对话框,添加了鼠标左键按下的响应函数:
void CRq::OnLButtonDown(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
MessageBox("鼠标响应","提示");
CDialog::OnLButtonDown(nFlags, point);
}
运行后,鼠标点击对话框的空白处,响应函数起作用,而当鼠标点击对话框中的控件(文本编辑框,按钮等)时,则响应函数不起作用。
请问各位高手如何能使鼠标点击对话框中的控件时,响应函数也可以起作用?
void CRq::OnLButtonDown(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
MessageBox("鼠标响应","提示");
CDialog::OnLButtonDown(nFlags, point);
}
运行后,鼠标点击对话框的空白处,响应函数起作用,而当鼠标点击对话框中的控件(文本编辑框,按钮等)时,则响应函数不起作用。
请问各位高手如何能使鼠标点击对话框中的控件时,响应函数也可以起作用?
BOOL CAboutDlg::PreTranslateMessage(MSG* pMsg)
{
if(pMsg->message == WM_LBUTTONDOWN)
{
MessageBox("鼠标左键按下。","提示");
}
return CDialog::PreTranslateMessage(pMsg);
}
控件也是一个窗口,当用鼠标点击控件时,这个消息会被控件获取,因为WindowFromPoint(获取包含指定点的窗口的句柄)返回的时控件的句柄。另外,WM_KEYDOWN消息也会被控件获取,如果将窗体中的所有控件都删除,窗体就会捕获到这个消息,使用PreTranslateMessage可以让主对话框首先截获这些消息