通常在设计对话框程序时,需要获取子控件在对话框中的坐标。例如,希望得到IDOK button在对话框中的矩形坐标,可以试采取如下方法。
CRect m_rect_OK; //定义对话框矩形
GetDlgItem(IDOK)->GetWindowRect(&m_rect_OK); //得到相对整个屏幕的坐标
ScreenToClient(&m_rect_OK); //转化为在父窗口(对话框)中的坐标
以下一段小程序显示了如何将IDOK button移至对话框正中间:
CRect m_rect_client;
CRect m_rect_OK;
GetWindowRect(&m_rect_client);
ScreenToClient(&m_rect_client);
GetDlgItem(IDOK)->GetWindowRect(&m_rect_OK);
ScreenToClient(&m_rect_OK);
int nX_new, nY_new;
nX_new = (m_rect_client.left + m_rect_client.right)/2 - m_rect_OK.Width()/2;
nY_new = (m_rect_client.top + m_rect_client.bottom)/2 - m_rect_OK.Height()/2;
GetDlgItem(IDOK)->MoveWindow(nX_new, nY_new, m_rect_OK.Width(), m_rect_OK.Height());