目的:使用VS2010基于对话框,在OnPaint中,获取对话框中指定控件的坐标位置。操作一:
CRect rectheader;
CWnd* pWnd;
pWnd = GetDlgItem(IDC_HEADERPOS);
pWnd=GetDlgItem(IDC_HEADERPOS);
pWnd->GetWindowRect(&rectheader);
pWnd->ScreenToClient(&rectheader);操作二:
CRect rectheader;
GetDlgItem(IDC_HEADERPOS)->GetWindowRect(rectheader);
ScreenToClient(&rectheader);
问题:
两种操作方法出现的坐标值都不一样,请问一下,为什么会出现这种情况 ?还希望高手给予解释一下,谢谢。
另:新建CWnd对像如何与当前对话框进行关联?
CRect rectheader;
CWnd* pWnd;
pWnd = GetDlgItem(IDC_HEADERPOS);
pWnd=GetDlgItem(IDC_HEADERPOS);
pWnd->GetWindowRect(&rectheader);
pWnd->ScreenToClient(&rectheader);操作二:
CRect rectheader;
GetDlgItem(IDC_HEADERPOS)->GetWindowRect(rectheader);
ScreenToClient(&rectheader);
问题:
两种操作方法出现的坐标值都不一样,请问一下,为什么会出现这种情况 ?还希望高手给予解释一下,谢谢。
另:新建CWnd对像如何与当前对话框进行关联?
改成相对于对话框。
this->ScreenToClient(&rectheader);
//将控件大小转换为在对话框中的区域坐标
在这两个操作中,调用的对象不一样。
哦,明白了,谢谢。
另外我还想问一下,不说是有句柄也可以操作对像吗?为什么用下面的代码运行时会报错呢???
CRect rectheader;
CWnd* pWnd;
pWnd->m_hWnd = GetDlgItem(IDC_HEADERPOS)->m_hWnd;
pWnd=GetDlgItem(IDC_HEADERPOS);
pWnd->GetWindowRect(&rectheader);
pWnd->ScreenToClient(&rectheader);
q
HWND hwnd = pWnd->GetSafeHwnd(); // 取得控件的句柄