基于对话框的程序在桌面分辩率改变后控件在窗体上的位置会改变,如本在窗体最下面的位置会变成中间,窗体下面空出一片,想在初始化时和用代码设置控件位置,在size()函数中在加载这些设置控件位置的代码,怎样做?

解决方案 »

  1.   

    只知道控件的ID如何获取控件的大小和区域?例如:如果知道控件的名称就可以用
    CListCtrl m_list;
    m_list.GetWindowRect()取得CRect大小!
      

  2.   

    OnSize中取得新的大小,然后SetWindowPos移动控件
      

  3.   

    在WM_DISPLAYCHANGE中
    SetWindowPos or MoveWindow
      

  4.   

    只知道控件的ID如何使用SetWindowPos or MoveWindow?
    如果是:CListCtrl m_list;
    m_list.MoveWindow();
      

  5.   

    先用GetWindowRect获取客户区大小后用MoveWindow来移动,比如://窗口中的定位
        CRect rtDlg;
    AfxGetMainWnd()->GetWindowRect(&rtDlg);GetDlgItem(IDC_***)->MoveWindow(rtDlg.left,rtDlg.top+5,
                                        rtDlg.Width()/5-2,25,TRUE);
      

  6.   

    首先获得控件句柄pWnd
    pWnd->SetWindowPos和 pWnd->MoveWindow两个函数都可以
      

  7.   

    GetDlgItem(IDC_XXX)->MoveWindow(left,top,Width,height,TRUE);