我在一个窗体上加上若干个控件,执行后 当窗体最大化时,控件的位置没有变,我想要控件的显示位置和比例随窗体的大小而变,该怎么办?
    还有一个问题是,我想通过COMBO BOX中选择一项在LIST CONTROL控件里分类相应的显示信息,显示的信息在分类类表的下面,我现在自己搞的,它到分类边界不换行, 我想要它换行,该怎么办!  在线等,在线结贴

解决方案 »

  1.   

    第一个问题:你可以响应WM_SIZE消息,记录窗体变化以后的cx,cy,然后在你重画窗口的函数中使用这两个参数计算控件的位置。当然你也可以直接在OnSize中写,但是你需要判断OnSize的时候控件是否已经创建。因为程序刚开始的时候就会有WM_SIZE消息,这个时候你的控件还没有被创建,这时就会报错!所以你需要判断!!
      

  2.   

    第二个问题,没看明白!说清楚一点,什么分类表??不懂
    combo box在选中时有消息,具体是什么我忘了,好象SELCHANGE什么的,响应这个消息,对你的LIST CONTROL做操作就好了!
      

  3.   

    我已经做好了 combo box和list control的对应关系 并且消息传过来了
     我想要的是,假如在como box中选择一个student项 我要在list control建立一个student项并且在student下面显示相应的信息,如果再选择relation项,便要在下面建立一个relation项并且在下面显示相应的信息,  并且显示的信息一行的宽度等于建立的列的宽度相同,如果字串的长度大于,列的宽度则换行
      

  4.   

    终于找到你的贴子了.
    第一个问题就像loseme915(郁闷) 说的那样解决.
    第二个问题我想只有以下解决方法:
    从CListCtrl派生出自己的子类.
    并重载DrawItem虚函数.
    自己绘制列表项,控制文本的换行.
    不过就是太麻烦了.
      

  5.   

    第一个能给出源代码啊 兄弟
      第二个是 我怎么才能在一串字符中找出我要找的内容 然后在LIST CONTROL中显示出来
    比如有这么一串字符 Current Calls: 0 Active: 0 From Neighbor: 0 From Parent: 0
     我要在list control建立一个Current Call的列 把结果0 显示在下面
      

  6.   

    楼上
    如果你的字符串有固定规格的话,比如这个.
    Current Calls: 0 Active: 0 From Neighbor: 0 From Parent: 0--------------------------------------------------------------
    那么:char * chmsg="Current Calls: 256 Active: 444 From Neighbor: 3245 From Parent: 89741";
    int i1=0,i2=0,i3=0,i4=0;
    sscanf(chmsg,"Current Calls: %d Active: %d From Neighbor: %d From Parent: %d",&i1,&i2,&i3,&i4); m_listview.DeleteAllItems();
    while(m_listview.DeleteColumn(0))
    {
    }
    m_listview.InsertColumn(0,"Current Calls",LVCFMT_LEFT,100);
    m_listview.InsertColumn(0,"Active",LVCFMT_LEFT,100);
    m_listview.InsertColumn(0,"From Neighbor",LVCFMT_LEFT,100);
    m_listview.InsertColumn(0,"From Parent",LVCFMT_LEFT,100); char ch[256]; m_listview.InsertItem(0,itoa(i1,ch,10));
    m_listview.SetItemText(0,1,itoa(i2,ch,10));
    m_listview.SetItemText(0,2,itoa(i3,ch,10));
    m_listview.SetItemText(0,3,itoa(i4,ch,10));
      

  7.   

    第一个问题,响应WM_SIZE消息。
    然后用
                      LPRECT rect;
    rect=new tagRECT;
    GetClientRect(rect);来获得窗口的位置。
    再用控件的成员函数MoveWindow()来调整控件的大小和位置。
      

  8.   

    我说的还是昨天那个问题,就是信息在缓冲区里,如CALL信息(Current Calls: 0 Active: 0 From Neighbor: 0 From Parent: 0)存放CString info中,  我想把他们分为 Current Call
     Active From Neighbor From Parent这些列 来显示相应的结果
      

  9.   

    如果你的信息是连续的话,比如:"Current Calls: 0 Active: 0 From Neighbor: 0 From Parent: 0 Current Calls: 0 Active: 0 From Neighbor: 0 From Parent: 0 ..."
    就要先把它们分开.
    才可以按照我上面说的做.
    如果是单独的格式,每一个字符串就只有"Current Calls: 0 Active: 0 From Neighbor: 0 From Parent: 0"
    直接修改一下就可以了.
    或许你的问题比较复杂.这样子讲不清楚.