解释一下如何获取MFC中picture中鼠标点击位置的坐标,我要过程不要理论!新建一个项目给我演示一下,好吗? 10
1个回答
展开全部
在一个自定义的Dialog中加入了picture控件,想要获取鼠标在该控件上的点击位置,遇到一些困难,最终解决了。方法如下:
其实挺简单的,首先用自定义的Dialog类重载CDialog的PreTranslateMessage函数,并在其中用到了Dialog的OnLButtonDown函数(其实不用也行,我只是想把操作封在这个函数里)这样就可以通过此函数传递点击位置。
BOOL PrintDialog::PreTranslateMessage(MSG* pMsg)
{
// TODO: Add your specialized code here and/or call the base class
if(pMsg->message == WM_LBUTTONDOWN && GetDlgItem(IDC_PACKPIC)->GetSafeHwnd() == pMsg->hwnd)
OnLButtonDown(MK_LBUTTON, pMsg->pt); //在此传递点击部位在对话框中的坐标
return CDialog::PreTranslateMessage(pMsg);
}
接下来在Dialog中的OnLButtonDown函数中判段是否点在picture控件内(lRect是控件的区域)
if((point.x>=lRect.left && point.x<=lRect.right) && (point.y>=lRect.top && point.y<=lRect.bottom))
{
// 通过对point的处理,获得实际在picture控件中的点击位置(坐标),完成。
point.x-=lRect.left;
point.y-=lRect.top;
}
其实挺简单的,首先用自定义的Dialog类重载CDialog的PreTranslateMessage函数,并在其中用到了Dialog的OnLButtonDown函数(其实不用也行,我只是想把操作封在这个函数里)这样就可以通过此函数传递点击位置。
BOOL PrintDialog::PreTranslateMessage(MSG* pMsg)
{
// TODO: Add your specialized code here and/or call the base class
if(pMsg->message == WM_LBUTTONDOWN && GetDlgItem(IDC_PACKPIC)->GetSafeHwnd() == pMsg->hwnd)
OnLButtonDown(MK_LBUTTON, pMsg->pt); //在此传递点击部位在对话框中的坐标
return CDialog::PreTranslateMessage(pMsg);
}
接下来在Dialog中的OnLButtonDown函数中判段是否点在picture控件内(lRect是控件的区域)
if((point.x>=lRect.left && point.x<=lRect.right) && (point.y>=lRect.top && point.y<=lRect.bottom))
{
// 通过对point的处理,获得实际在picture控件中的点击位置(坐标),完成。
point.x-=lRect.left;
point.y-=lRect.top;
}
追问
0.0
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询