现在我在客户区中放置了一个静态框,一个Listview,两个控件
问题1:我如何得到这个静态框的大小,如何得到ListView的大小
2:如何根据不同的分辨率来动态的改变静态框和ListView的大小
3:它的相对位置如何改变呀?

解决方案 »

  1.   

    同意楼上。
    得到客户区、各个控件的RECT,根据你得规则重新计算大小,然后MoveWindow。只是其中要注意所使用RECT得相对位置,是相对客户区还是屏幕的。我以前就是这么做了。确实比较繁琐,如果东西多的化。
      

  2.   

    先声明你的静态框控件,如你的Edit控件,声明为m_edtMain
    然后调用:
    RECT rect;
    m_edtMain.GetWindowRect(&rect);移动时可以用SetWindowPos(...)来改改变控件的位置.
      

  3.   

    依照如下调用序列:
    GetWindowRect
    ScreenToClient
    SetWindowPos
      

  4.   

    GetWindowRect
    MoveWindow
    ::GetDC()->GetDeviceCaps(HORZRES);
    SetWindowPos
      

  5.   

    得到分辨率int cx = GetSystemMetrics(SM_CXSCREEN);
    int cy = GetSystemMetrics(SM_CYSCREEN);
    CRect rect;
    m_listViev.GetClientRect(&rect); //得到大小
    GetDlgItem(IDC_STATIC1).GetClientRect(&rect1);//可这样根据分辨率设定位置和大小
    m_listView.SetWindowPos(this, cx*1/10,cy*1/10 ,cx*2/10 ,cy*3/10  SWP_SHOWWINDOW|SWP_NOZORDER);
      

  6.   

    应该在哪个事件中设置这些属性呢?
    我在OnInitialUpdate()创建的,不管用首先我想设置控件的大小,因为我并不知道满屏的时候有多宽,所以我想根据得到客户区 的宽度来设置静态框的宽度,高度按照自己设置的设置,然后再设置listView的宽度,设置方法是:得到客户区的高度和宽度,然后减去已经使用的高度,使其正好充满客户区