在一個自定義的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;
}