现在的位置: 首页 > 综合 > 正文

得到控件在父窗口中的矩形坐标

2013年12月13日 ⁄ 综合 ⁄ 共 760字 ⁄ 字号 评论关闭

通常在设计对话框程序时,需要获取子控件在对话框中的坐标。例如,希望得到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());

 

抱歉!评论已关闭.